2

我不确定 16 位或 32 位应用程序是什么意思。16 位应用程序是不需要超过 2^16 字节内存空间的应用程序吗?这个 16 位是指应用程序的最大大小吗?

4

3 回答 3

3

这意味着应用程序已针对具有 16 位内存寻址或 32 位内存寻址的处理器编译。64 位应用程序也是如此。

该数字是指应用程序可以寻址的最大内存量。

请参阅维基百科 - 16 位32 位64 位(以及更多)。

于 2011-02-04T11:52:21.457 回答
1

32 位应用程序是在 32 位平面地址空间中运行的软件。

常见问题解答

64 位 CPU 会在 64 位版本的操作系统上运行标准(32 位)程序吗? 是的,它会。64 位系统向后兼容 32 位系统。

64 位操作系统会在 64 位处理器上运行标准应用程序吗? 再一次,它会的。这是因为向后兼容。

我可以在 64 位 CPU 上运行 W2K 和 WXP,并使用旧软件吗? 是的,32 位操作系统(W2K 和 WXP)将在 64 位处理器上运行。此外,您应该能够在 64 位操作系统上运行“旧软件”。

于 2011-02-04T11:53:33.890 回答
0

数字(地址模式的汇编指令的 32 或 16(例如“[use16]”和“[use32]”))并不是指应用程序可以寻址的最大内存量!

因为使用 80386+,还可以将操作数大小和地址大小前缀与 16 位 PM 结合使用,以寻址高达 4 GB 的内存。

(我们的应用程序可以使用的最大内存量是指 GDT/LDT 选择器内的段大小的段条目,或者使用 64 kb 段的默认大小。)

32 位和 16 位地址模式之间的唯一区别是这些操作数大小和地址大小前缀的含义和用法。

[使用16]

因此,如果我们想在 16 位地址模式中使用 32 位操作数/地址,那么我们必须将这些前缀添加到我们的操作码中。如果没有这些前缀,我们只能使用 16 位。

[使用32]

在 32 位地址模式中,我们发现了完全相反的情况,所以如果我们想使用 32 位操作数/地址,那么我们必须从我们的操作码中去掉这些前缀,并且只有当我们想使用 16 位操作数/地址时,我们才有将这些前缀添加到我们的操作码中。

如果我们仔细使用上面的这些尺寸指令(或类似的符号),那么我们的汇编器将完成这项工作。

16 位模式下的操作数大小前缀

短剑

于 2013-02-02T11:54:39.770 回答