基本函式結構:
push ebp
mov ebp,esp
sub esp,44h
push ebx
push esi
push edi
lea edi,[ebp-44h]
mov ecx,11h
mov eax,0cccccccch
rep stos dword ptr [edi]
xor eax,eax ;若函式有返回值,則返回值在eax中
pop edi
pop esi
pop ebx
mov esp,ebp
pop ebp
ret迴圈結構:
cmp ....
jge(jl...) addr
jmp ....
if...else if...else結構:
cmp dword ptr [ebp-4],1
jle 跳到else if位置
......
jmp endaddr
cmp dword ptr [ebp-4],0
jge 跳到else位置
......
jmp endaddr
......
switch分支:
;先列出邏輯跳轉語句
cmp .....
je addr1
cmp .....
je addr2
jmp .....
;case內部語句單獨列出
addr1 ......
jmp endaddr
addr2 ......
jmp endaddr
struct結構:
;test[i].a = 1;
mov ecx,dword ptr [ebp-2ch]
mov dword ptr [ebp+ecx*8 -28h],1 ;8是結構大小,反彙編後總是以乙個常數出現
;test[i].b = 2;
mov edx,dword ptr [ebp-2ch]
mov dword ptr [ebp+edx*8-24h],2
;總之,結構的形式總是:1.求結構開始位址saddr;2.通過saddr求各成員的位址paddrs;3.為paddrs賦值。
c與彙編的關係
start是匯程式設計序的入口,main是c程式的入口?gcc 只是乙個 外殼而不是真正的編譯器,這真的c編譯器是 usr lib gcc i486 gun 4.3.2 cc1,gcc呼叫c編譯器 彙編器和鏈結器完成c 的編譯鏈結工作。usr lib gcc i486 linux gun 4.3.2...
c基本邏輯控制語句
for 語句的執行流程圖 for 表示式1 表示式2 表示式3 迴圈語句 先對表示式1進行求解 再對表示式2進行處理,表示式2一般是條件語句,條件為真則執行迴圈語句,否則不執行迴圈 迴圈語句執行完後執行語句3,語句3一般是步長,接下來繼續執行語句2,為真則繼續執行迴圈語句.if x 語句 if 條件...
Delphi迴圈語句對應的彙編語句序列 轉
count 終值,start 起始值 正向 語句 for i 0 to count do 彙編 mov eax,count test eax,eax jl inc eax 迴圈體 dec eax jnz 迴圈體 語句 for i 0 to count 1 do 彙編 mov eax,count de...