gpt4 book ai didi

c - 理解反汇编——看两个 main() 的

转载 作者:太空宇宙 更新时间:2023-11-04 01:41:57 25 4
gpt4 key购买 nike

以下 C 程序的转储:

int main() {
int i,j;
for(i=0; i<2; i++) {
j++;
}
return 0;
}

正在生产:

08048394 <main>:
int main() {
8048394: 8d 4c 24 04 lea 0x4(%esp),%ecx
8048398: 83 e4 f0 and $0xfffffff0,%esp
804839b: ff 71 fc pushl -0x4(%ecx)
804839e: 55 push %ebp
804839f: 89 e5 mov %esp,%ebp
80483a1: 51 push %ecx
80483a2: 83 ec 10 sub $0x10,%esp
int i,j;
for(i=0; i<2; i++) {
80483a5: c7 45 f8 00 00 00 00 movl $0x0,-0x8(%ebp)
80483ac: eb 08 jmp 80483b6 <main+0x22>
j++;
80483ae: 83 45 f4 01 addl $0x1,-0xc(%ebp)
int main() {
int i,j;
for(i=0; i<2; i++) {
80483b2: 83 45 f8 01 addl $0x1,-0x8(%ebp)
80483b6: 83 7d f8 01 cmpl $0x1,-0x8(%ebp)
80483ba: 7e f2 jle 80483ae <main+0x1a>
j++;
}
return 0;
80483bc: b8 00 00 00 00 mov $0x0,%eax
}

不管我放i<2i<10 , 我看到两个 main()的具有相同的结构。有人能告诉我为什么会这样吗?

最佳答案

您没有看到两个 main()。您看到反汇编程序被 for 循环完全搞糊涂了。实际的程序集,如果您从头到尾阅读它,只表示一个函数 main(),逻辑路径与 C 代码相同。

简而言之:插入程序集的 C 是错误的

关于c - 理解反汇编——看两个 main() 的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4181307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com