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


7

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

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

所以两个问题:

  1. 是否有可能与代码示例什么问题?
  2. 有没有人注意到在32位上使用64位Linux有什么好处(我在Stack Overflow上看到过一些关于这个的话题,但它们大多与Windows Vista和Windows XP有关。)
4

你的代码示例应该都可以工作。 64位处理器和操作系统仍然可以以“兼容性模式”的方式运行32位代码。你的汇编例子没有什么不同。您可能需要提供额外的一两个程序集(例如.BITS 32),但仅此而已。

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

编辑:要使用煤气,你只需要使用命令行参数“--32”编译在64位Linux 32位代码,如the GAS manual

  0

非常感谢你,最有帮助! 22 2月. 092009-02-22 15:00:30


1

指出即使你运行Linux 64位,它有可能编译并运行32位二进制文​​件。我不知道Mint对此有多好,我想你应该检查一下。

然而,64位汇编器并不完全兼容32位,例如你有不同的(更多)寄存器。有一些特定的说明在任一平台上都不可用。

我会说转移到64位并不是什么大不了的事。 您仍然可以编写32位程序集,然后尝试让它也以64位运行(应该不会太难),作为更多编程/学习乐趣的来源。

  0

谢谢你,非常有帮助! 22 2月. 092009-02-22 15:01:18

  0

我看到你更喜欢其他答案,但如果你认为我的帮助很大,你也可以给它一个+1投票;)但是我也很满意你的评论:) 22 2月. 092009-02-22 18:30:48


1

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