我有以下代码:了解装配返回主
0x401050 <main>: push %ebp
0x401051 <main+1>: mov %esp,%ebp
0x401053 <main+3>: sub $0x8,%esp
0x401056 <main+6>: and $0xfffffff0,%esp
0x401059 <main+9>: mov $0x0,%eax
0x40105e <main+14>: mov %eax,0xfffffffc(%ebp)
0x401061 <main+17>: mov 0xfffffffc(%ebp),%eax
0x401064 <main+20>: call 0x4013a0 <_alloca>
0x401069 <main+25>: call 0x401430 <__main>
0x40106e <main+30>: mov $0x0,%edx
0x401073 <main+35>: add 0x8(%ebp),%edx
0x401076 <main+38>: mov %edx,%eax
0x401078 <main+40>: leave
0x401079 <main+41>: ret
我想了解什么值返回从主(注册eax
)。 我真的不明白什么是存储在0xfffffffc(%ebp)
0
然后回到eax
的目的:
0x40105e <main+14>: mov %eax,0xfffffffc(%ebp)
0x401061 <main+17>: mov 0xfffffffc(%ebp),%eax
,什么是要在0x8(%ebp)
,那么什么将是它添加到eax
0x401073 <main+35>: add 0x8(%ebp),%edx
谢谢!
那么,我们应该问你* *为什么你在你的* *代码所有这些多余的操作。如果这不是你的代码,他们必须解释你是如何获得它的。这段代码是从C代码编译的吗?如果是这样,那么原始的C代码是什么,编译器优化设置是什么? – AnT
这段代码是在测验中给我的,除了代码编译自C –
之外,我什么也不知道。所问的问题与C没有关系。这不是反编译或“解释代码”服务。 – Olaf