64位应用程序的内存布局

9

64位OS是指通用寄存器的位宽。它能够一次处理64位(数据+运算)。

我们知道,为了使64位系统真正有用,程序员需要编写64位应​​用程序。

但是,我想知道32位应用程序和64位应用程序之间有什么区别?我不是问编译64位应用程序需要进行哪些配置更改;相反,我想知道内存中两个应用程序的结构差异。

例如,Linux上的C程序通常在内存中看起来像这样:

  1. 文字区隔
  2. 初始化数据段
  3. 未初始化的数据段

我以为64位应用程序在内存中的布局结构上看起来会相同,只是每个字节的地址(假定字节可寻址系统)具有更多位。如果是这样,那么64位意味着什么?只是更大的可寻址内存空间?

另外,当编译64位应用程序时,我们假设源代码中的一条指令已编译为汇编代码中的add MIPS指令:

add $1 $2 $1 // $1 += $2;

每个MIPS指令均精确地以32位编码。因此,这里的问题是,如果将某个应用程序配置为编译为64位应用程序,那么add指令将是什么样?它仍然有32位还是扩展到64位而违反了MIPS规则?如果仍然是32位,我看不出64位应用程序有什么区别,因此它“无法充分发挥64位操作系统的性能”。

请赐教。

phuclv

首先,您用MIPS标记了问题,但提出了一个一般性问题。MIPS中64位应用程序的布局与其他64位体系结构不同。但是布局是事物在内存中的排列方式,而不是您所说的段。这些段只是内存“区域”,几乎所有体系结构的可执行文件中都包含这些段。

64位体系结构不仅是可寻址存储器的“扩展范围”,而且还提供了新的指令集。由于某些旧指令不适用于64位数据,因此它们必须创建新指令来处理。

关于指令,MIPS 64位仍然使用32位指令。如果将其扩展到64位,那么它将在添加的32位中包含什么,而其他32位已经足够(如果不是有点多余)来表示所有参数。但是,当然有许多关于64位数字的新指令(例如,移位超过31位或加载/存储双字...)。顺便说一句,如果没有,

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

“无法同时分析32位和64位应用程序”错误

来自分类Dev

如何在64位Ubuntu上编译32位应用程序?

来自分类Dev

如何在64位RHEL上编译32位应用程序?

来自分类Dev

iOS 64位应用程序大小翻倍

来自分类Dev

在64位应用程序中使用32位库

来自分类Dev

应用程序布局内的嵌套布局

来自分类Dev

从32位应用程序挂接64位进程

来自分类Dev

为什么64位Delphi应用程序计算的结果不同于32位构建?

来自分类Dev

Xcode5编译64位应用程序错误

来自分类Dev

64位OS(Windows)上的32位应用程序内存限制

来自分类Dev

C ++获取64位应用程序的模块基地址

来自分类Dev

在32位应用程序中使用64位整数可以吗?

来自分类Dev

64位应用程序的内存使用开销是多少?

来自分类Dev

.NET对WSAStartup的使用对64位应用程序安全吗?

来自分类Dev

适用于32位和64位平台的Java应用程序

来自分类Dev

在Java应用程序中混合运行32位和64位本机库

来自分类Dev

连接到64位VB .Net应用程序中的32位MS Access DB

来自分类Dev

在64位.NET应用程序中是否忽略了CallingConvention?

来自分类Dev

32位架构与64位架构之间的主要区别在于应用程序速度和内存管理形式?

来自分类Dev

我可以在32位Linux中运行64位应用程序吗?

来自分类Dev

要使32位应用程序在64位Windows 7上使用2GB以上的内存?

来自分类Dev

64位内核上的32位应用程序可以使用所有内存吗?

来自分类Dev

EasyHook:从本机C应用程序中的32位应用程序注入64位dll吗?

来自分类Dev

在64位操作系统中使用32位应用程序内存。

来自分类Dev

64位软件/应用程序比32位软件/应用程序需要更多的RAM吗?

来自分类Dev

应用程序应支持64位Java

来自分类Dev

对于64位Windows上的32位应用程序,是64位操作是原子操作

来自分类Dev

应用程序内存行为

来自分类Dev

如何使用 CMake 使用 NASM 应用程序编译 64 位 macOS 应用程序?

Related 相关文章

  1. 1

    “无法同时分析32位和64位应用程序”错误

  2. 2

    如何在64位Ubuntu上编译32位应用程序?

  3. 3

    如何在64位RHEL上编译32位应用程序?

  4. 4

    iOS 64位应用程序大小翻倍

  5. 5

    在64位应用程序中使用32位库

  6. 6

    应用程序布局内的嵌套布局

  7. 7

    从32位应用程序挂接64位进程

  8. 8

    为什么64位Delphi应用程序计算的结果不同于32位构建?

  9. 9

    Xcode5编译64位应用程序错误

  10. 10

    64位OS(Windows)上的32位应用程序内存限制

  11. 11

    C ++获取64位应用程序的模块基地址

  12. 12

    在32位应用程序中使用64位整数可以吗?

  13. 13

    64位应用程序的内存使用开销是多少?

  14. 14

    .NET对WSAStartup的使用对64位应用程序安全吗?

  15. 15

    适用于32位和64位平台的Java应用程序

  16. 16

    在Java应用程序中混合运行32位和64位本机库

  17. 17

    连接到64位VB .Net应用程序中的32位MS Access DB

  18. 18

    在64位.NET应用程序中是否忽略了CallingConvention?

  19. 19

    32位架构与64位架构之间的主要区别在于应用程序速度和内存管理形式?

  20. 20

    我可以在32位Linux中运行64位应用程序吗?

  21. 21

    要使32位应用程序在64位Windows 7上使用2GB以上的内存?

  22. 22

    64位内核上的32位应用程序可以使用所有内存吗?

  23. 23

    EasyHook:从本机C应用程序中的32位应用程序注入64位dll吗?

  24. 24

    在64位操作系统中使用32位应用程序内存。

  25. 25

    64位软件/应用程序比32位软件/应用程序需要更多的RAM吗?

  26. 26

    应用程序应支持64位Java

  27. 27

    对于64位Windows上的32位应用程序,是64位操作是原子操作

  28. 28

    应用程序内存行为

  29. 29

    如何使用 CMake 使用 NASM 应用程序编译 64 位 macOS 应用程序?

热门标签

归档