原檔案:count.cint main()
編譯命令:(gcc version 4.1.2 20070925) gcc -s count.c
彙編碼如下
.file "count.c"
.text
.globl main
.type main, @function
main:
leal 4(%esp), %ecx
進入main例程時最後乙個入棧的就是返回位址,也即
esp+4=返回位址 所以返回位址在[ecx-4]之中
andl $-16, %esp //
為了16
位元組對齊
?? pushl -4(%ecx) //??
pushl %ebp
push stack base pointer onto the stack
movl %esp, %ebp
move the stack pointer into the base pointer
pushl %ecx //??
subl $16, %esp
get 16 bytes of stack
memstarting at
ebp movl $0, -8(%ebp)
move 0 into address
ebp8 (j)
.movl $0, -12(%ebp)
move 0 into address
ebp12 (i)
.jmp .l2
.l3:
movl -12(%ebp), %eax
move
iinto
eax.
addl %eax, -8(%ebp)
j=j+i
.addl $1, -12(%ebp) i= i+1
.l2:
cmpl $7, -12(%ebp)
this instruction compares the value of ito
7.jle .l3
jump to label
.l3if 12
(%ebp)
is less than or equal to 7.
movl $0, %eax
set the return code in
eax addl $16, %esp
popl %ecx
popl %ebp
leal -4(%ecx), %esp
ret.size main, .-main
.ident "gcc: (gnu) 4.1.2 20070925 (red hat 4.1.2-27)"
.section .note.gnu-stack,"",@progbits
main函式的引數解析
main函式的引數解析 我們平常寫main函式的時候習慣不帶引數,將其預設為void.但如果我們仔細觀察的話,我們就能發現其實main函式是有引數的。接下來,我們就來了解一下main函式的引數列表。首先main函式的原型為 int main int argc,char argv char envp ...
main函式的引數解析
我們一般寫 的時候都會這樣寫main函式 int main 所以剛開始我們都以為main函式是沒有引數的,然而事實卻不是這樣子的。首先,我們來看看main函式的原型 int main int argc,char argv,char envp 所以main函式是有引數的,而且有三個引數。第乙個引數 a...
C的main函式解析
終於開始學習linux的c語言程式設計了嚶嚶嚶,有種終於入門的感動 關於linux中c語言程式設計包括vim gcc makefile這些工具的用法這些不是本次的主題,我在這裡就不詳細展開了,本文只闡述一下main函式的引數呼叫問題。virtualbox 6.1.12,ubuntu 20.04,co...