技術書典7で「x86_64機械語入門」本出します!

9/22(日)に池袋で開催される技術書典7に「へにゃぺんて(配置:く50D)」でブース出展します!

f:id:cupnes:20190911211543j:plain

開催概要

  技術書典7
開催日 2019年9月22日(日)
場所 池袋サンシャインシティ 展示ホールC/D(文化会館ビル2/3F)

新刊について

新刊は「作って分かる!x86_64機械語入門」です!

x86_64の機械語の構文を一つ一つ理解し、QEMU上でOSレスで動作する実行バイナリを手書きしようという、ネタ本です(笑)

f:id:cupnes:20190911213651j:plain

また、前回の夏コミ(C96)新刊の「てっとりばやくマルチコア」や、それ以前の既刊もすべて持っていきます!

詳しくは技術書典7のサークル紹介ページをご覧ください。

目次

  • はじめに
    • 本書の構成
    • 開発環境・動作確認環境
    • 本書のPDF版/HTML版やソースコードの公開場所について
  • 第1章 環境構築とはじめてのプログラム
    • 1.1 本書で機械語を理解していく流れ
    • 1.2 機械語構文の理解を補助するツール(objdump, as_dump, das_dump)
    • 1.3 テキストベースでバイナリを書く(t2b)
    • 1.4 VM上でOSレスで実行する(QEMU, OVMF, poiboot)
    • 1.5 何もしない命令「nop」(命令2)
    • 1.6 CPUを休ませる「hlt」(命令3)
  • 第2章 基本的な演算
    • 2.1 データ格納命令(mov)(命令4)
    • 2.2 四則演算
    • 2.3 論理演算
    • 2.4 シフト演算(命令13-15)
    • 2.5 インクリメント/デクリメント(命令16-17)
  • 第3章 シリアルドライバを作る
    • 3.1 文字を送信して画面表示
    • 3.2 コントローラの状態を確認して送信する
    • 3.3 受信も追加しエコーバックプログラムを作る
  • 第4章 フレームバッファで画面描画
    • 4.1 フレームバッファのアドレスを取得する
    • 4.2 画面の幅と高さを取得する
    • 4.3 画面へ1ピクセル描画してみる
    • 4.4 画面を塗りつぶしてみる
    • 4.5 ランダム色で塗りつぶしてみる
  • 第5章 キーボードドライバを作る
    • 5.1 キー入力を受け取るまでの流れ
    • 5.2 ステータスレジスタ値を取得
    • 5.3 キー入力値が無ければ先頭へ戻る
    • 5.4 データレジスタからキー入力値を取得
    • 5.5 キー入力値がBreakならスキャンコードを抽出し、Makeなら先頭へ戻る
    • 5.6 スキャンコードをレジスタCLへコピーし、先頭へ戻る
    • 5.7 動作確認
  • 付録A 登場した機械語命令と構文の一覧
  • おわりに
  • 参考情報
    • 参考にさせてもらった情報
    • poibootについて