x86汇编语言中的内存分配

时间:2016-12-28 20:52:14

标签: assembly x86

我昨天正在学习SIZEOF和TYPE运营商。在这样做时,我创建了一个数组,

Array QWORD 1h,2h,3h,4h,5h

在.code部分,我写道,

MOV eax, SIZEOF Array

组装完之后,我只得到28个字节分配给阵列(使用visual studio community 2015),这很尴尬。我在调试会话中看到了寄存器的值。

我的问题是,每个QWORD占用8个字节的内存。那么,为什么我没有将SIZEOF数组作为40?

更糟糕的是。 当我运行时,

Array QWORD 1h

它给了我8个字节的预期

Array QWORD 1h,2h

给我10 .. !! 和,

Array QWORD 1h,2h,3h 

给我18 .. !!
等等...

1 个答案:

答案 0 :(得分:5)

默认情况下,Visual Studio的注册窗口显示十六进制数字。可能是因为你在混淆28和0x28吗? 0x28与40相同。(类似地,0x10是16,0x18是24,依此类推。)