32-bit - 32位应用程序是什么意思?
数字(地址模式的汇编指令的 32 或 16(例如“[use16]”和“[use32]”))并不是指应用程序可以寻址的最大内存量!
因为使用 80386+,还可以将操作数大小和地址大小前缀与 16 位 PM 结合使用,以寻址高达 4 GB 的内存。
(我们的应用程序可以使用的最大内存量是指 GDT/LDT 选择器内的段大小的段条目,或者使用 64 kb 段的默认大小。)
32 位和 16 位地址模式之间的唯一区别是这些操作数大小和地址大小前缀的含义和用法。
[使用16]
因此,如果我们想在 16 位地址模式中使用 32 位操作数/地址,那么我们必须将这些前缀添加到我们的操作码中。如果没有这些前缀,我们只能使用 16 位。
[使用32]
在 32 位地址模式中,我们发现了完全相反的情况,所以如果我们想使用 32 位操作数/地址,那么我们必须从我们的操作码中去掉这些前缀,并且只有当我们想使用 16 位操作数/地址时,我们才有将这些前缀添加到我们的操作码中。
如果我们仔细使用上面的这些尺寸指令(或类似的符号),那么我们的汇编器将完成这项工作。
16 位模式下的操作数大小前缀
短剑