検索まずは、検索! Index人気の20件
最新の20件2018-12-022018-01-092017-05-072017-04-252016-05-012015-02-242014-01-032013-06-252012-12-302012-12-292012-07-272012-07-162012-02-052012-01-292011-10-012011-09-18 |
GNU アセンブラ(GAS)目次コメントの種類GASは、3種類のコメントをサポートしている。
構文基本構文GASは、NASMなどのIntel構文と違い、AT&T構文なので、オペランドのソースとディスティネーションが逆。 NASMmovd Dest, Src GASmovl Src, Dest レジスタGASはレジスタを記述するときに%記号をつける。 NASMmovd eax, ebx GASmovl %ebx, %eax 即値GASは即値(定数数値)を記述するときに$記号をつける。 NASMmovd eax, 0x20 GASmovl $0x20, %eax メモリ参照メモリ参照の基本構文は以下の通り。 displacement(base, index, scale) この基本構文から一部省略して記述可能。
なお、計算式は以下の通り。 displacement + base + index * scale ※セグメントレジスタを以下のように指定することも可能。 segment:displacement(base, index, scale) セグメントレジスタ省略時は、baseの種類により異なる。
以下、書き方一覧 displacement (base) displacement(base) displacement(index, scale) displacement(base, index) displacement(base, index, scale) displacement最も単純な構文。 例: movw $0x1234, label label: .word 0x0000 ラベル(アドレス)を$記号なしで指定するだけ。 (base)レジスタを使用する場合の構文。 例: movw $0x1234, (%eax) displacement(base)C言語において、関数の引数やローカル変数を参照する場合に有効な構文。 例: movw $0x1234, -4(%ebp) < ローカル変数を参照 displacement(index, scale)1次元配列を参照する場合に有効な構文。 例: movw $0x1234, 0x1000(%esi, 4) 1次元配列で有効に参照する場合のイメージ displacement[index] < 1要素のサイズ:scale displacement(base, index)2次元配列、構造体配列を参照する場合に有効な構文 例: movw $0x1234, +4(%ebx, %edx) 構造体配列で有効に参照する場合のイメージ base[index].displacement index += sizeof base[0] base[index].displacement displacement(base, index, scale)2次元配列を参照する場合に有効な構文。 例: movw $0x1234, 0x1000(%ebx, %esi, 4) 2次元配列で有効に参照する場合のイメージ displacement[base][index] < 1要素のサイズ:scale ディレクティブGASでディレクティブを記述するときは、"."を用いる。 ディレクティブの種類
参考・関連
|