- 论坛徽章:
- 0
|
回复 #13 cjaizss 的帖子
.file "1.c"
.section .rodata
.LC0:
.string "bianlizhibianlizhi"
.text
.globl _start
.type main, @function
_start:
nop
pushl %ebp
movl %esp, %ebp
pushl %edi
pushl %esi
subl $64, %esp
andl $-16, %esp
movl $0, %eax
addl $15, %eax
addl $15, %eax
shrl $4, %eax
sall $4, %eax
subl %eax, %esp
movl $.LC0, -16(%ebp)
movl $10, -12(%ebp)
movl -16(%ebp), %esi
leal -66(%ebp), %edi
movl -12(%ebp), %ecx
#APP
cld;
rep
movsb;
#NO_APP
movl $0, %eax
leal -8(%ebp), %esp
popl %esi
popl %edi
leave
ret
.size main, .-main
.ident "GCC: (GNU) 4.0.0 20050519 (Red Hat 4.0.0- "
.section .note.GNU-stack,"",@progbits
As –gstabs –o 1.o 1.s
Ld –o 1 1.o
Gdb –q 1
还有一个问题就是我用C编译一个程序,怎样用GDB进行汇编一句一句的调试?好像GDB的step不能调试__asm__();还有那个nexti干什么的啊?
然后到ret 就出错了,它RET以后是什么程序接手?
Ret究竟是怎么执行的,还有好像记得内核模拟RET可以使进程从内核态转到用户态,没看懂。。
新手,哎。。。见笑了 |
|