我目前正在学习汇编语言。 我在Gas(32位)上使用Linux Mint。使用本书: Programming from the Ground Up
我正在使用的机器有一个AMD Turion 64 bit处理器,但我限制为2 GB的RAM。 我正在考虑将我的Linux安装升级到64位版本的Linux Mint,但我担心因为本书针对32位x86架构,代码示例不起作用。
所以有两个问题:
答案 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快速棘手。