问题描述
|
我正在看一些组装的东西。因此,
pushl bar
与subl $4,%esp
movl bar,($esp)
相同。
几个问题:
1)%esp
寄存器有什么特别之处?
2)寄存器周围的括号是什么意思?
3)pushl bar
意味着在堆栈顶部有条形,对吗?那么,当我subl $4
时会发生什么?这是否意味着我要在堆栈顶部创建一个空白空间以便我将bar
移入?
解决方法
ESP是堆栈指针-它始终指向堆栈的“顶部”
括号表示“ ESP所指向的内存”,而不是ESP寄存器本身
您将堆栈指针向下移动了四个字节(在大多数实现中,堆栈指针向下增长-将某些内容推入堆栈的“顶部”意味着将其存储在较低的内存地址中)