作者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