作者swinp (啦啦)
看板ASM
標題[問題] 新手請教有關main的前置asm code
時間Mon Apr 7 12:33:38 2008
像如下的是普通C code compile出來的asm
int main(void)
{
401050: 55 push %ebp
401051: 89 e5 mov %esp,%ebp
401053: 83 ec 08 sub $0x8,%esp
401056: 83 e4 f0 and $0xfffffff0,%esp
常常看到c編譯出來的asm code一開始main都大概如下的長相
前幾行跟一般函數呼叫要做的差不多
還算大概知到要先保存ebp,然後再把esp存成新的ebp
之後sub esp預留區域變數的空間
但再來的and -16,目的是什麼呢,
無法理解已經弄好的esp為什麼要清空後面4bit?
這行在呼叫函數好像沒看到?
由於手邊目前沒書,想請問一下這行是要做什麼呢?
(還是說我跟本搞錯了,
因為main在第一行C code之前補的code我常不知道在做什麼的
看code總感覺在做白工,有做沒做差不多的樣子)
問題好像很笨,有點新,還請不另賜教 @@
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.224.26.164
1F:推 sunneo:我猜啦...那是為了讓他對齊在2的冪次方的位址上 04/07 14:53
2F:推 Ross0916:對齊16的倍數 有些指令有這要求 04/11 21:35
3F:推 wowtiger:SSE指令要直接對記憶體存取 幾乎都是要align 16 04/12 08:24