【发布时间】:2011-06-21 07:46:58
【问题描述】:
我不确定 16 位或 32 位应用程序是什么意思。一个 16 位应用程序是一个不需要超过 2^16 字节内存空间的应用程序吗?这个 16 位是指应用程序的最大大小吗?
【问题讨论】:
-
超级用户已经彻底回答了这个问题:superuser.com/questions/56540/32-bit-vs-64-bit-systems
我不确定 16 位或 32 位应用程序是什么意思。一个 16 位应用程序是一个不需要超过 2^16 字节内存空间的应用程序吗?这个 16 位是指应用程序的最大大小吗?
【问题讨论】:
【讨论】:
A 32-bit application is software that runs in a 32-bit flat address space.
常见问题解答
64 位 CPU 会在 64 位版本的操作系统上运行标准(32 位)程序吗? 是的,它会。 64 位系统向后兼容 32 位系统。
64 位操作系统会在 64 位处理器上运行标准应用程序吗? 再一次,它会的。这是因为向后兼容。
我可以在 64 位 CPU 上运行 W2K 和 WXP,并使用旧软件吗? 是的,32 位操作系统(W2K 和 WXP)将在 64 位处理器上运行。此外,您应该能够在 64 位操作系统上运行“旧软件”。
【讨论】:
地址模式的汇编指令的数字(32或16(例如“[use16]”和“[use32]”))不是是指应用程序的最大内存量可以解决!
由于 80386+ 还可以使用操作数大小和地址大小前缀与 16 位 PM 组合来寻址高达 4 GB 的内存。
(我们的应用程序可以使用的最大内存量是指 GDT/LDT 选择器内的段大小的段条目,或者是 64 kb 段的默认大小。)
32 位和 16 位地址模式之间的唯一区别是这些操作数大小和地址大小前缀的含义和用法。
[使用16]
所以如果我们想在 16 位地址模式中使用 32 位操作数/地址,那么我们必须将这些前缀添加到我们的操作码中。如果没有这些前缀,我们只能使用 16 位。
[use32]
在 32 位地址模式中,我们发现了截然相反的情况,所以如果我们想使用 32 位操作数/地址,那么我们必须从我们的操作码中省略这些前缀,并且仅当我们想使用 16 位操作数/地址时,然后我们必须将这些前缀添加到我们的操作码中。
如果我们小心地使用上面的这些尺寸指令(或类似的符号),那么我们的汇编器就会完成这项工作。
Operand size prefix in 16-bit mode
德克
【讨论】: