for(變數初始化操作;判斷是否執行迴圈;變數增減操作)
1)初始化塊;提公升堆疊
00f83c00 push ebp
00f83c01 mov ebp,esp
00f83c03 sub esp,0cch
;儲存現場
00f83c09 push ebx
00f83c0a push esi
00f83c0b push edi
;初始化堆疊
00f83c0c lea edi,[ebp+ffffff34h]
00f83c12 mov ecx,33h
00f83c17 mov eax,0cccccccch
00f83c1c rep stos dword ptr es:[edi]
;for迴圈**
00f83c1e mov dword ptr [ebp-8],0 ;初始化for引數
00f83c25 jmp 00f83c30
00f83c27 mov eax,dword ptr [ebp-8]
00f83c2a add eax,1 ;自增運算
00f83c2d mov dword ptr [ebp-8],eax
00f83c30 mov eax,dword ptr [ebp-8]
00f83c33 cmp eax,dword ptr [ebp+8] ;比較操作,i < n
00f83c36 jge 00f83c55
00f83c38 mov esi,esp
00f83c3a mov eax,dword ptr [ebp-8]
00f83c3d push eax
00f83c3e push 0f858a8h
00f83c43 call dword ptr ds:[00f89114h] ;呼叫printf
00f83c49 add esp,8 ;呼叫完函式的堆疊平衡
00f83c4c cmp esi,esp
00f83c4e call 00f8113b
00f83c53 jmp 00f83c27 ;重複for迴圈
;恢復現場
2)判斷是否執行塊
3)執行功能塊
4)改變變數塊
彙編 C語言的IF轉彙編
include int main else return 0 對應彙編 如下 00ae1a10 push ebp 棧提公升 00ae1a11 mov ebp,esp 00ae1a13 sub esp,0d8h 00ae1a19 push ebx 儲存現場 00ae1a1a push esi 00ae...
從C語言到彙編,從彙編到C語言
看雪一同志寫的文章,我覺得很基礎和有用,知識著眼於小處。積累才是王道!一 迴圈語句與發彙編後的機器語言 1 for迴圈 下面是一段c語言的 我們的目的是來看其反彙編的結果 int myfunction int a,int b return c 前面的反彙編暫時不理它,這裡從for的地方開始反彙編,結...
C語言嵌入彙編
概述 linux核心原始碼中,有很多c語言中嵌入了彙編語句,如何理解這些彙編語句,對理解核心有很重要的作用。具有輸入和輸出引數的嵌入式彙編語句的基本格式為 asm 彙編語句 輸出暫存器 輸入暫存器 會被修改的暫存器 除第一行以外,後面帶冒號的行若不使用就都可以省略。彙編語句 是你寫彙編指令的地方 輸...