Skip to content

Instantly share code, notes, and snippets.

@AtsukiTak
Created January 18, 2019 13:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AtsukiTak/a1f38cee78923326cc45018b29b601c2 to your computer and use it in GitHub Desktop.
Save AtsukiTak/a1f38cee78923326cc45018b29b601c2 to your computer and use it in GitHub Desktop.

Hello world to Transistor

  • アセンブリ

    • 目的
      • マシンコードの抽象化
        • ニーモニックコードへの符号化
        • ニーモニックコードへの集約
          • 複数の Instruction を jmp というニーモニックに集約できる
        • ラベルの利用
    • 具体例
      • nop
      • mov rax 42 // rax = 42
      • mov rax rbx
      • add rax 42 // rax += 42
  • アセンブラ

  • リンカ

  • マシンコード

    • 目的
      • CPUが理解できるコード
  • CPU

    • 動作
      • 1ステップごとに、メモリから「命令データ」を読み出す
        • 01101001011101 的な
        • メモリ上のどこから読み出すの?
          • プログラムカウンタ
      • 「命令データ」を命令デコーダが解析する
      • 命令を実行する
    • 命令バイト列
      • 計算命令
        • 1ステップごとにレジスタから値を取り出し、計算をし、レジスタに値を記録する
        • どのレジスタの値を使うか
        • どのような計算を行うか
          • 掛け算の話すると終わらない
            • 掛け算はソフトウェアでやってることにする
        • どのレジスタに結果を保存するか
        • ↑のような情報をバイナリ列で表現する
        • RISC-VのISA仕様書 2-4章
        • レジスタ上の値のみ計算に使える
      • ロード命令
        • メモリ上からデータをレジスタに保存する
        • メモリのどの番地から値をとってくるか
        • どのレジスタに保存するか
        • RISC-VのISA仕様書 2-6章
      • ストア命令
        • レジスタの値をメモリ上に保存する
        • どのレジスタの値を保存するか
        • メモリのどの番地に保存するか
        • RISC-VのISA仕様書 2-6章
      • ジャンプ命令
        • プログラムカウンタの値を書き換える(乱暴)
          • 加算
        • ジャンプ先から帰ってこれるように、次の命令の場所(今の命令の場所 + 4byte)をレジスタに保存する
        • RISC-VのISA仕様書 2-5章
    • 演算装置
      • ALU
        • 算術論理演算回路
        • AND, OR, NOTなどの論理演算
        • 高速な加算
      • 加算器
        • 半加算器、全加算器
      • バレルシフタ
        • ビットシフト
    • レジスタ
      • フリップフロップ
        • NANDゲート
          • トランジスタ
            • 半導体
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment