64位Linux,汇编语言,问题?

时间:2009-02-22 14:23:12

标签: linux assembly 64-bit

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

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

所以有两个问题:

  1. 代码示例是否可能出现任何问题?
  2. 这里有没有人注意到使用64位Linux超过32位的一般好处(我在Stack Overflow上看到了一些关于此的线程,但它们主要与Windows Vista和Windows XP相关。)

3 个答案:

答案 0 :(得分:4)

您的代码示例应该仍然有效。 64位处理器和操作系统仍然可以在某种“兼容模式”下运行32位代码。您的装配示例也不例外。您可能需要提供额外的一两个装配线(例如.BITS 32),但这就是全部。

通常,使用64位操作系统比使用32位操作系统更快。 x86_64的寄存器多于i386。由于你正在进行汇编,你已经知道了什么寄存器用于...拥有更多的寄存器意味着更少的东西必须在栈上移动(和其他临时存储器),因此你的程序花费更少的时间管理数据和更多时间处理这些数据。

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

答案 1 :(得分:1)

即使您运行Linux 64bit,也可以在其上编译和运行32位二进制文​​件。我不知道Mint对此的支持有多好,我认为你应该检查一下。

然而,<64> 64位汇编程序与32位不完全兼容,例如你有不同的(更多)寄存器。任何一个平台都没有一些具体说明。

我想说转向64位并不是什么大问题。 您仍然可以编写32位程序集,然后尝试将其运行为64位(不应该太难),作为更多编程/学习乐趣的来源。

答案 2 :(得分:1)

通常32位是足够的,所以如果你真的需要它只使用64位或更多。 如果您想要将其作为32位应用程序进行编程,最好在编程之前做出决定 一个64位的应用程序,然后坚持它作为混合模式调试ca快速棘手。