我不确定 16 位或 32 位应用程序是什么意思。16 位应用程序是不需要超过 2^16 字节内存空间的应用程序吗?这个 16 位是指应用程序的最大大小吗?
3 回答
常见问题解答
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 位。
[使用32]
在 32 位地址模式中,我们发现了完全相反的情况,所以如果我们想使用 32 位操作数/地址,那么我们必须从我们的操作码中去掉这些前缀,并且只有当我们想使用 16 位操作数/地址时,我们才有将这些前缀添加到我们的操作码中。
如果我们仔细使用上面的这些尺寸指令(或类似的符号),那么我们的汇编器将完成这项工作。
短剑