【发布时间】:2014-06-05 19:43:01
【问题描述】:
我在调用使用堆栈的函数时遇到问题。程序的输出包含很多垃圾,好像字符串长度不对:
.code32
.equ kernel, 0x80
.equ stdout, 0x01
.equ write, 0x04
.equ exit, 0x01
.section .data
sum:
.ascii "text"
.equ lensum, . - sum
.section .text
.type writetxt, @function
writetxt:
movl $write, %eax
movl $stdout, %ebx
popl %ecx
pop %edx
int kernel
ret
.global _start
_start:
pushl $lensum
pushl $sum
call writetxt
movl $exit, %eax
movl $0, %ebx
int $kernel
我知道函数返回地址驻留在堆栈上,但我不知道如何修复它
【问题讨论】: