text0006a
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* [[text0006]]の補足説明#1
-(by [[K]], 2019.03.01)
** (0)
-これは[[「川合のプログラミング言語自作のためのテキスト#0...
** (1) x86の32ビットモード用の簡易コード表
-32ビットレジスタについて:
--レジスタは8本ある。このうち、EAXとECXとEDXは値を壊した...
--ESPは、関数に入ったらすぐに、8バイトアラインしなければ...
|レジスタ名|EAX|ECX|EDX|EBX|ESP|EBP|ESI|EDI|
|レジスタ番号|0|1|2|3|4|5|6|7|
-リトルエンディアン
--x86はリトルエンディアンを採用しているので、EAXに0x12345...
-簡易コード表
|機械語|アセンブラ表記(参考)|動作説明|
|B8 xx xx xx xx|MOV EAX,xxxxxxxx|EAXレジスタに定数xxxxxxx...
|B9 xx xx xx xx|MOV ECX,xxxxxxxx|ECXレジスタに定数xxxxxxx...
|8B 05 xx xx xx xx|MOV EAX,[xxxxxxxx]|メモリの値を4バイト...
|8B 0D xx xx xx xx|MOV ECX,[xxxxxxxx]|メモリの値を4バイト...
|89 05 xx xx xx xx|MOV [xxxxxxxx],EAX|EAXの値を4バイトの...
|89 0D xx xx xx xx|MOV [xxxxxxxx],ECX|ECXの値を4バイトの...
|A1 xx xx xx xx|MOV EAX,[xxxxxxxx]|8B 05 xx xx xx xxの簡...
|A3 xx xx xx xx|MOV EAX,[xxxxxxxx]|89 05 xx xx xx xxの簡...
|89 C0|MOV EAX,EAX|こんなの意味ない命令だけど、一応紹介|
|89 C1|MOV ECX,EAX|ECX = EAX;|
|89 C2|MOV EDX,EAX|EDX = EAX; 一般にC2の部分のビット0~...
|01 C2|ADD EDX,EAX|EDX += EAX; ここのC2を変えれば他のレジ...
|29 C2|SUB EDX,EAX|EDX -= EAX; ここのC2を変えれば他のレジ...
|21 C2|AND EDX,EAX|EDX &= EAX; ここのC2を変えれば他のレジ...
|09 C2|OR EDX,EAX|EDX |= EAX; ここのC2を変えれば他のレジ...
|31 C2|XOR EDX,EAX|EDX ^= EAX; ここのC2を変えれば他のレジ...
|39 C2|CMP EDX,EAX|if (EDX ?? EAX) 比較用の命令で??の部分...
|0F 8D xx xx xx xx|JGE xxxxxxxx|if ( >= ) goto ... [符号...
|0F AF C2|IMUL EAX,EDX|EAX *= EDX; c2の部分の意味が加算...
|83 C0 xx|ADD EAX,xx|EAX += xx; 127以下の小さな整数の定数...
|83 E8 xx|SUB EAX,xx|EAX -= xx; 127以下の小さな整数の定数...
|C3|RET|return; 関数の終了(呼び出し元へ戻る)|
-現状で認識している問題点
--0F 8x命令群の紹介が少ない
--メモリ番地の指定にレジスタを混ぜる方法の説明がごっそり...
* こめんと欄
#comment
終了行:
* [[text0006]]の補足説明#1
-(by [[K]], 2019.03.01)
** (0)
-これは[[「川合のプログラミング言語自作のためのテキスト#0...
** (1) x86の32ビットモード用の簡易コード表
-32ビットレジスタについて:
--レジスタは8本ある。このうち、EAXとECXとEDXは値を壊した...
--ESPは、関数に入ったらすぐに、8バイトアラインしなければ...
|レジスタ名|EAX|ECX|EDX|EBX|ESP|EBP|ESI|EDI|
|レジスタ番号|0|1|2|3|4|5|6|7|
-リトルエンディアン
--x86はリトルエンディアンを採用しているので、EAXに0x12345...
-簡易コード表
|機械語|アセンブラ表記(参考)|動作説明|
|B8 xx xx xx xx|MOV EAX,xxxxxxxx|EAXレジスタに定数xxxxxxx...
|B9 xx xx xx xx|MOV ECX,xxxxxxxx|ECXレジスタに定数xxxxxxx...
|8B 05 xx xx xx xx|MOV EAX,[xxxxxxxx]|メモリの値を4バイト...
|8B 0D xx xx xx xx|MOV ECX,[xxxxxxxx]|メモリの値を4バイト...
|89 05 xx xx xx xx|MOV [xxxxxxxx],EAX|EAXの値を4バイトの...
|89 0D xx xx xx xx|MOV [xxxxxxxx],ECX|ECXの値を4バイトの...
|A1 xx xx xx xx|MOV EAX,[xxxxxxxx]|8B 05 xx xx xx xxの簡...
|A3 xx xx xx xx|MOV EAX,[xxxxxxxx]|89 05 xx xx xx xxの簡...
|89 C0|MOV EAX,EAX|こんなの意味ない命令だけど、一応紹介|
|89 C1|MOV ECX,EAX|ECX = EAX;|
|89 C2|MOV EDX,EAX|EDX = EAX; 一般にC2の部分のビット0~...
|01 C2|ADD EDX,EAX|EDX += EAX; ここのC2を変えれば他のレジ...
|29 C2|SUB EDX,EAX|EDX -= EAX; ここのC2を変えれば他のレジ...
|21 C2|AND EDX,EAX|EDX &= EAX; ここのC2を変えれば他のレジ...
|09 C2|OR EDX,EAX|EDX |= EAX; ここのC2を変えれば他のレジ...
|31 C2|XOR EDX,EAX|EDX ^= EAX; ここのC2を変えれば他のレジ...
|39 C2|CMP EDX,EAX|if (EDX ?? EAX) 比較用の命令で??の部分...
|0F 8D xx xx xx xx|JGE xxxxxxxx|if ( >= ) goto ... [符号...
|0F AF C2|IMUL EAX,EDX|EAX *= EDX; c2の部分の意味が加算...
|83 C0 xx|ADD EAX,xx|EAX += xx; 127以下の小さな整数の定数...
|83 E8 xx|SUB EAX,xx|EAX -= xx; 127以下の小さな整数の定数...
|C3|RET|return; 関数の終了(呼び出し元へ戻る)|
-現状で認識している問題点
--0F 8x命令群の紹介が少ない
--メモリ番地の指定にレジスタを混ぜる方法の説明がごっそり...
* こめんと欄
#comment
ページ名: