linux - 64 位 linux,汇编语言,问题?

标签 linux assembly 64-bit

我目前正在学习汇编语言。 我正在使用 GasLinux Mint (32 位)。使用本书: Programming from the Ground Up .

我使用的机器有一个 AMD Turion 64 bit处理器,但我仅限于 2 GB 的 RAM。 我正在考虑将我的 Linux 安装升级到 64 位版本的 Linux Mint,但我担心因为本书针对的是 32 位 x86 架构,所以代码示例无法运行。

所以两个问题:

  1. 代码示例是否可能存在任何问题?
  2. 这里有没有人注意到使用 64 位 Linux 比使用 32 位 Linux 总体上有什么好处(我在 Stack Overflow 上看到过一些与此有关的帖子,但它们主要与 Windows Vista 和 Windows XP 相关。)

最佳答案

您的代码示例应该仍然有效。 64 位处理器和操作系统仍然可以在某种“兼容模式”下运行 32 位代码。您的 assembly 示例也不异常(exception)。您可能需要提供一两行额外的汇编代码(例如 .BITS 32),仅此而已。

一般来说,使用 64 位操作系统会比使用 32 位操作系统更快。 x86_64 比 i386 有更多的寄存器。由于您正在从事汇编工作,因此您已经知道寄存器的用途...拥有更多寄存器意味着必须将更少的东西移入和移出堆栈(以及其他临时内存),因此您的程序花费更少的时间来管理数据和更多时间处理这些数据。

编辑:要使用 gas 在 64 位 linux 上编译 32 位代码,您只需使用命令行参数“--32”,如 the GAS manual 中所述

关于linux - 64 位 linux,汇编语言,问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/574990/

相关文章:

linux - 在 linux 中运行另一种语言的程序

java - 当我向服务器发送 http post 请求时,如何像 java 代码一样在 linux c 中实现目标?

linux - 在 GNU/Linux 上获取由 MONO 执行的进程

python - 如何从内存中执行机器语言?

asp.net-mvc - 如何在发布期间使用 x64 aspnet_compiler

activex - 是否有 MsStkPrp.dll 的 x64 版本

c++ - 使用PST SDK编译错误

c++ - 从程序集中调用的 C++ 方法返回对象数据

将 C 转换为 mips 程序集,未对齐的地址错误

c++ - 如何在 Windows 7 64 位下使用 AddMonitor() 添加 redmonnt.dll