【CSAPP】三、程序的机器级表示
本章基于兩種相關的機器語言:Intel IA32和x86-64,前者注重32位,后者注重64位。
本章脈絡:c\匯編\機器碼之間的關系,數據的表示,控制結構如何實現。運行棧,局部變量的存儲,數據結構。
?
【一】程序編碼
-O1表示1級optimize,一般第二級優化比較好。
1、機器級代碼
兩種抽象尤為重要:1、機器級程序的格式和行為 --指令集體系結構。2、儲存器地址是虛擬的,字節數組。
機器級代碼可控部分:
程序計數器(pc, %eip)
整數寄存器文件:8個命名的位置,分別存儲32位的值,可以是數據,也可以是地址。
條件碼寄存器?
?
【二】數據格式
字:16位 w
雙字:32位 dw
四字:64位 qw
匯編后綴:b:1, w:2, l:4, 浮點數 s:4, l:8 不會引起歧義,浮點數舒勇不同的指令和寄存器
?
【三】訪問信息
1、操作數指示符
除了立即數和寄存器,都要有尋址的操作。
立即數$0x108, 寄存器%eax
寄存器尋址直接加括號(%eax),前面加數就是偏移量,Imm(Ep, Ei, s) 即為 M[Imm + R[Ep] + R[Ei] * s]
2、數據傳送指令
MOV S, D
后綴有MOVS MOVZ,分別是符號擴展和零擴展
PUSH %eax (棧指針是規定好的, %esp)
3、算術和邏輯操作
leal S, D 將寄存器S中地址的數加載到寄存器D中
加一、減一、取負、取補
加、減、乘、異或、或、與
左移、算術右移、邏輯右移
4、控制
?
轉載于:https://www.cnblogs.com/yesuuu/p/6938102.html
總結
以上是生活随笔為你收集整理的【CSAPP】三、程序的机器级表示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单身人数这么多,经济将会受到影响
- 下一篇: 瑞芯微芯片怎么样 AI芯片仅次于海思