(%rdi)位址所在的儲存空間
movq -0x18(%rbp), %rax
leaq -0x18(%rbp), %rax
movq是將rbp-0x18根據這個記憶體位址找到對應的記憶體空間,將記憶體空間的資料取出來賦給rax,所以rax裡面放的是記憶體空間對應的記憶體資料
leaq是 直接將rbp-0x18位址值賦值給rax,這個rax中放的是記憶體位址,((因為不支援movq %rbp-0x18, %rax這種操作))
movq $0x10(%rbp) %rip 做的是值傳遞
leaq專門做位址值傳遞的 將0x111a+rip的位址值傳給rdi
leaq 0x111a(%rip), %rdi
callq 0x100000f20 (函式位址,跳到這個位址執行完後通過retq又跳回去)
jump 0x100000f20 (跳到這個位址後不回頭)
暫存器有16個常用的暫存器
rax; rbx; rcx; rdx;
rsi; rdi; rbp; rsp;
r8; r9; r10; r11; r12; r13; r14; r15
段暫存器(segment register)
cs(code segment):**段暫存器;
ds(data segment):資料段暫存器;
ss(stack segment):堆疊段暫存器;
es(extra segment):附加段暫存器
應該掌握的16個暫存器
rax,rbx,rcx,rdx,rbp,rsp,rsi,rdi
r8,r9,r10,r11,r12,r13,r14,r15
通用暫存器共有8個: ax,bx,cx,dx, bp,sp, si,di;
資料暫存器 ax,bx,cx,dx
ax累加器(accumulator)
bx基位址暫存器(base register)
cx計數暫存器(count register)
dx資料暫存器(data register)
指標暫存器(pointer register):bp,sp
bp 基址指標暫存器(base register)
sp 堆疊指標暫存器(stack register)
變址暫存器(index register):si,di
si 源變址暫存器(source index)
di 目的變址暫存器(destination index)
暫存器具體用途
rax,rdx 常作為函式返回值使用
rdi,rsi,rdx,rcx,r8,r9常用於存放函式引數
rbx,rbp,r12,r13,r14,r15用於資料儲存
rsp,rbp,用於棧操作,rsp(棧指標暫存器,指向棧頂)(rsp為基底,rbp為棧頂,中間部分一般為棧空間)
記憶體位址格式為: 0x4bdc(%rip),一般是全域性變數,全域性區(資料段)
記憶體位址格式為: -0x78(%rbp),一般是區域性變數,棧空間
記憶體位址格式為: 0x10(%rax),一般是堆空間
rip(instruction pointer)指令指標:儲存著cpu下一條要執行的指令位址,一旦cpu讀取一條指令,rip會自動指向下一條指令(儲存下一條指令的z位址)
cs:ip 兩個暫存器指示了 cpu當前將要讀取的指令的位址,其中cs為**段暫存器,而ip為指令指標暫存器。
什麼叫做指示了cpu當前將要讀取的指令
你想讓cpu執行哪行指令,你就讓cs:ip指向儲存有指令的那塊記憶體即可。
任何時候,cs:ip指向的位址中的內容都是cpu當前執行的指令。
r開頭:64bit,8位元組
e開頭:32bit,4位元組
x/3xw 0x00007fff89adaa10
x/4xg 0x00007fff89adaa10
register read
general purpose registers:
rax = 0x00007fff89adaa10 libswiftcore.dylibtype metadata for any + 8 rbx = 0x0000000000000000 rcx = 0x00007ffeefbff618 rdx = 0x00007ffeefbff528 rdi = 0x0000000000000001 rsi = 0x00007ffeefbff518 rbp = 0x00007ffeefbff4f0 rsp = 0x00007ffeefbff490 r8 = 0x0000000000000000 r9 = 0x0000000000000000 r10 = 0x0000000000000000 r11 = 0x0000000000000000 r12 = 0x0000000000000000 r13 = 0x0000000000000000 r14 = 0x0000000000000000 r15 = 0x0000000000000000 rip = 0x0000000100000e0e 1111
main + 30 at main.swift:10:7
rflags = 0x0000000000000212
cs = 0x000000000000002b
fs = 0x0000000000000000
gs = 0x0000000000000000
ORACLE相關內容
1 em,dbca,netca,netmgr出現亂碼方案 cd oracle home jre lib mv font.properties font.properties.bak mv font.properties.zh font.properties em,dbca,netca,netmgr詳...
JVM相關內容
本地 native code 每個因素對記憶體占用的影響又會隨著應用程式 執行環境和系統平台的不同而變化,那怎樣計算總的記憶體佔用量?是的,想得到乙個準確的數字不是那麼容易,因為 你很難控制本地 native 部分。你能控制的部分只有堆大小 xmx,類占用的記憶體 xx maxpermsize,還有...
指標相關內容
1.指標是變數,佔4位元組,存放的是位址 2.指標型別與零值比較 if n null 或者if n null 3.野指標 int p 空指標 int p null 避免野指標 以char型別為例 char p char mallloc sizeof char 10 要包含標頭檔案 include 使...