整數暫存器:
c語言資料型別在x86-64中的大小:
c宣告intel資料型別
彙編**字尾
大小(位元組)
char位元組b
1short字w
2int雙字l
4long四字q
8char*四字q
8float
單精度s
4double
雙精度l
8條件碼:
條件碼解釋
cf進製標誌。最近的操作使最高位產生了進製。可用來檢測無符號操作的溢位。
zf零標誌。最近的操作得出的結果為0。
sf符號標誌。最近的操作得到的結果為負數。
of溢位標誌。最近的操作導致乙個補碼溢位-正溢位或負溢位。
彙編指令:
指令同義名
效果描述
mov s,d
d 傳送資料(複製值的形式)
movz s,r
r 以零擴充套件進行傳送
movs s,r
r 以符號擴充套件進行傳送
push
壓入棧pop
彈出棧lea s,d
d 傳送資料(複製位址的形式)
inc d
d 加1dec d
d 減1neg d
d 取負not d
d 取補add s,d
d 加sub s,d
d 減imul s,d
d 乘xor s,d
d 異或or s,d
d 或and s,d
d 與sal k,d
d 左移
shl k,d
d 左移(等同於sal)
sar k,d
d >ak
算術右移
shr k,d
d >lk
邏輯右移
imul s
r[%rdx]:r[%rax]
有符號全乘法
mul s
r[%rdx]:r[%rax]
無符號全乘法
cqto
r[%rdx]:r[%rax]
轉換為八字
idiv s
r[%rdx]
有符號除法
div s
r[%rdx]
無符號除法
cmp s1,s2
比較test s1,s2
測試賦值指令
sete d
setz
d 相等/零
setne d
setnz
d 不等/非零
sets d
d 負數setns d
d 非負數setg d
setnle
d 大於(有符號》)
setge d
setnl
d 大於等於(有符號》=)
setl d
setnge
d 小於(有符號
setle d
setng
d 小於等於(有符號<=)
seta d
setnbe
d 超過(無符號》)
setae d
setnb
d c超過或相等(無符號》=)
setb d
setnae
d 低於(無符號
setbe d
setna
d 低於或相等(有符號<=)
跳轉指令
jmp label
1直接跳轉
jmp *operand
1間接跳轉
je label
jzzf
相等/零
jne label
jnz~zf
不相等/非零
js label
sf負數
jns label
~sf非負數
jg label
jnle
~(sf^of)&~zf
大於(有符號》)
jge label
jnl~(sf^of)
大於或等於(有符號》=)
jl label
jnge
sf^of
小於(有符號
jle label
jng(sf^of)|zf
小於或等於(有符號<=)
ja label
jnbe
~cf&~zf
超過(無符號》)
jae label
jnb~cf
超過或相等(無符號》=)
jb label
jnae
cf低於(無符號
jbe label
jnacf|zf
低於或相等(無符號<=)
條件傳送指令
cmove s,r
cmovz
zf相等/零
cmovne s,r
cmovnz
~zf不相等/非零
cmovs s,r
sf負數
cmovns s,r
~sf非負數
cmovg s,r
cmovnle
~(sf^of)&~zf
大於(有符號》)
cmovge s,r
cmovnl
~(sf^of)
大於或等於(有符號》=)
cmovl s,r
cmovnge
sf^of
小於(有符號
cmovle s,r
cmovng
(sf^of)|zf
小於或等於(<=)
cmova s,r
cmovnbe
~cf&~zf
超過(無符號》)
cmovae s,r
cmovnb
~cf超過或相等(無符號》=)
cmovb s,r
cmovnae
cf低於(無符號
cmovbe s,r
cmovna
cf|zf
低於或相等(無符號<=)
轉移控制
call label
過程呼叫
call *operand
過程呼叫
ret從過程呼叫中返回
資料《深入理解計算機系統》
CSAPP 計算機系統漫遊
資訊 位 上下文 include int main 在linux中可以通過hexdump c hello.c的ascii碼表示 由於書中顯示的是十進位制,故轉換成十進位制與書中一致,例如 n 十六進製制0a 對應的10進製 10 高階語言 機器語言 為了能讓hello.c執行,每條c語言 高階語言 ...
CSAPP 1 計算機系統的漫遊
首先,儲存與計算機上的資訊都是位,計算機通過上下文判斷儲存資訊的型別 文字檔案 二進位制檔案 1.c程式格式的流轉 0 hello.c 通過預處理器 cpp 增加標頭檔案後得到hello.i 0 hello.i通過編譯器編譯 ccl 得到hello.s 匯程式設計序 0 hello.s通過彙編器 a...
計算機系統知識總結
軟考第一章講了計算機系統知識,學習到了一些和硬體相關的知識,對計算機體系結構有了乙個大概的了解。讓我認識了cpu的具體結構,大致的工作流程,了解了資料在計算機內部的表現形式。尤其是機器數,反碼補碼的創造,是靈活與智慧型的表現。下面是思維導圖 根據不同的層次定了多個系統,本節介紹了指令系統,儲存系統,...