以下代码作为栈指令push,mov,pop的练习
.section .data//数据段
value:
.int 0x87654321
.section .text
.global _start
_start:
nop
pushl $0x88888888
#pushw $0x66666666
movl $0x12345678,%ebx
push %ebx
#pushl %ebx
pushw %bx
pushw value
push $value
#pushb %ah
popl %ebx
popl %eax
popw %cx
movl $1, %eax
int $0x80
terminal命令行运行框图
注意看红色箭头esp的值,每次都从栈底压入,压入几个字节,esp地址的值就减少几,十六进制加减法
指令
pushl $0x88888888
movl $0x12345678,%ebx
push %ebx
pushw %bx
pushw value
指令:
注意区分pushw value与 push $value的区别,前一个放的是地址所在的字节,后一个放的是地址
push $value
popl %ebx
popl %eax
指令:
popw %cx
movl $1, %eax