我知道内存寻址可以用字大小的倍数进行,以便为英特尔32位,在装配上堆栈中分配内存可以与内存adressing英特尔IA 32
//pseudo code
sub , esp ,4 // so for allocating for a integer on stack
sub esp, 8 // for a buffer of size 5 for example b[5]
所以做寻址完成与4的倍数。因此,也指对堆栈的当地人和参数与
// referring to variable --ebp-4
但有时在拆卸我看到这样
movb $0x41, 0xffffffff(%ebp) ,// refer to ebp-1 for example
一些指令,以便它是指在1个字节的内存中完成。
所以它指的是一个字节,而不是4个字节的倍数。4个字节的倍数仅适用于esp?或者它与每个寄存器有关?
_“我看到一些指令,比如'ins 0xffffffff,ebp'”_。你能举一个实际反汇编的具体例子吗? – Michael
@ Michael,.edited – barp
单个字节不一定与4对齐,它不会是当它是数组的元素或结构的成员时。这将是浪费,处理器不需要它。 –