(マシンレベルの表現III章プログラム)CSAppというノート-02

P145の第三章〜P252、三回。Benpian第二、P171〜P211。

概要

この章のデータは、条件レジスタの話や関数がサブルーチンを呼び出します。

条件レジスタ

CMP命令cmp S1,S2 => IF(S2 - S1)、CMPB、CMPW、CMPL、cmpq。
テスト命令test S1,S2 => IF(S1 & S2)、TESTB、testw、testl、TestQ。

利用コードの条件

3つの方法

  1. コード・バイトの条件に応じて設定命令は、0または1に設定されています。
  2. JMP命令。条件コードをジャンプします。

  3. また、条件付き転送として知られているCMOV命令条件コード割り当て、。

C言語は、環状構造の多様性を提供し、実行-一方が、一方、アセンブラ命令のために、効果は、サイクル試験条件及びそのジャンプの組み合わせを用いて達成することができません。

switch文は、より効率的である(表をジャンプ)ジャンプテーブルを用いて実現することができます。

関数呼び出し機能

サブルーチンコール機能P Qは、以下があるかもしれません

  1. メモリを節約するために、後で使用することができる「レジスタの保存、呼び出し元」
  2. 新しいスタックフレームがQで生成され、アドレスがスタックフレームのP Q底のスタックフレームに保存されます
  3. コールQ
  4. Q機能は、メモリを節約するために使用することができる「呼び出し先は、レジスタを保存しました」
  5. 取得パラメータはまた、スタックメモリアドレスを介して送信されても​​よい(6まで)レジスタパラメータに渡すことができる動作上を通過させました。
  6. メモリから指定されたレジスタに「呼び出し側がレジスタを保存」復元します
  7. 戻り、破壊機能Qのスタックフレーム、現在のスタックフレームのポイントP
  8. メモリから指定されたレジスタに「呼び出し側がレジスタを保存」復元します
  9. フォローアップのために行動を続行

おすすめ

転載: www.cnblogs.com/winwink/p/CSAPP_Note_Chapter3_Machine_part2.html