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

7

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

我所使用的机器有一颗AMD Turion 64位处理器,但是我只能使用2GB的内存。我正在考虑升级到64位版本的Linux Mint,但我担心因为该书针对32位x86架构,代码示例可能无法运行。

所以有两个问题:

  1. 代码示例是否存在问题?
  2. 这里是否有人注意到使用64位Linux比32位Linux更好(我在Stack Overflow上看到了一些讨论,但大多与Windows Vista vs. Windows XP有关。)
3个回答

4
你的代码示例应该仍然有效。64位处理器和操作系统可以在一种“兼容模式”下运行32位代码。你的汇编示例没有任何不同。你可能需要提供额外的一行或两行汇编(例如.BITS 32),但这就是全部。
通常情况下,使用64位操作系统比使用32位操作系统更快。x86_64比i386有更多的寄存器。由于你正在处理汇编语言,你已经知道寄存器的用途......拥有更多的寄存器意味着不必将更多的东西移动到堆栈(和其他临时内存)中,因此你的程序花费更少的时间管理数据,而是更多的时间处理数据。
编辑:要在64位linux上使用gas编译32位代码,只需使用命令行参数“--32”,如GAS手册中所述。

1
通常情况下,32位就足够了,所以只有在真正需要时才使用64位或更多。 最好在编程之前决定是要将其作为32位应用程序还是64位应用程序,并坚持不变,因为混合模式调试可能会很棘手。

1
即使您运行Linux 64位,也可以编译和运行32位二进制文件。我不知道Mint对此的支持情况如何,我建议您进行检查。
然而,64位汇编与32位不完全兼容,例如有不同(更多)的寄存器。在任一平台上都有一些特定指令不可用。
我认为转向64位并不是一件大事。您仍然可以编写32位汇编代码,然后尝试将其作为64位代码运行(应该不太难),这是更多编程/学习乐趣的源泉。

我知道你更喜欢另一个答案,但如果你认为我的回答有帮助,也可以给它一个+1的投票;)但是我也很高兴看到你的评论:) - ypnos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接