Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
大家好,我正在尝试构建以下功能
function int Main(){ return 5; }
这是我的汇编代码:
.globl Main Main: pushl %ebp movl %esp, %ebp subl $0, %esp pushl $5 movl %ebp, %esp popl %ebp ret
然而这总是返回 1 它从不返回 5 为什么?
怎么样:
Main: push byte 5 pop eax ret
总结大家所说的:您的主要错误是返回值应该进入 EAX 而它没有。Prolog 和 Epilog 代码对于像这样的简单函数不是必需的,但它们也不会受到伤害(只要它们不会使堆栈不平衡)。所以组装应该去:
(prolog) movl $5, %eax, (epilog) ret
prolog 和 epilog 是编译器默认生成的。