我有以下代碼:瞭解裝配返回主
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