diff --git "a/src/3.\347\250\213\345\272\217\347\232\204\346\234\272\345\231\250\347\272\247\350\241\250\347\244\272.md" "b/src/3.\347\250\213\345\272\217\347\232\204\346\234\272\345\231\250\347\272\247\350\241\250\347\244\272.md" new file mode 100644 index 0000000..5e0c616 --- /dev/null +++ "b/src/3.\347\250\213\345\272\217\347\232\204\346\234\272\345\231\250\347\272\247\350\241\250\347\244\272.md" @@ -0,0 +1,31 @@ +## 操作数指示符 + + + +- 立即数(`immediate`),表示常数值 + +- 寄存器(`register`),**表示某个寄存器的内容** + +- 内存引用,根据计算出来的地址访问某个内存位置 + + 寻址模式组成: + + - 立即数偏移`Imm` + - 基址寄存器`rb` + - 变址寄存器`ri` + - 比例因子`s`(s 是`1,2,4,8`). + - 有效地址的计算:`Imm+R[rb]+s*[ri]` + +![image-20230507234057757](https://raw.githubusercontent.com/Jiewyjson/P/main/md/v1/202305072341281.png) + +### 数据传送指令 + +> `MOV`类,使用字符(`b`,`w`,`l`,`q`)来指定数据的大小(字节,字,双字,四字). +> +> `movl` 以寄存器为目的时,会把寄存器的高位四字节设为`0`. +> +> `movabsq` 能以任意64位立即数作为源操作数,并且目的只能是寄存器 +> +> `movz` 把目的中剩余的字节填充为`0`,`movs` 通过符号扩展填充 +> +> `cltq` 只作用与寄存器`%eax` ` %rax`. \ No newline at end of file diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 9299c9e..4ba90ee 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -3,9 +3,11 @@ - [cs](./cs.md) - [csapp](./csapp.md) - [2.信息的表示和处理](./2.信息的表示和处理.md) + - [3.程序的机器级表示](./3.程序的机器级表示.md) - [网络](./网络.md) - [http](http.md) - [概述](./概述.md) + - [数据库](./数据库系统.md) - [rust_learning](./rust_index.md) diff --git a/src/assets/image-20230507234057757.png b/src/assets/image-20230507234057757.png new file mode 100644 index 0000000..f8c044f Binary files /dev/null and b/src/assets/image-20230507234057757.png differ diff --git a/src/csapp.md b/src/csapp.md index eeb6a43..a3edf3f 100644 --- a/src/csapp.md +++ b/src/csapp.md @@ -1,3 +1,5 @@ # cs:app -[2.信息的表示和处理](./2.信息的表示和处理.md) \ No newline at end of file +[2.信息的表示和处理](./2.信息的表示和处理.md) + +[3.程序的机器级表示](./3.程序的机器级表示.md) \ No newline at end of file diff --git "a/src/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237.md" "b/src/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237.md" new file mode 100644 index 0000000..e69de29