我已经开始阅读 Randall Hyde 的“组装艺术”来开始刺激我的味觉。我从这里下载并安装了 HLA 1.38(我需要 64 位支持),并按照那里列出的文档和上面的书中的描述编写了 Hello, World 程序。
program helloWorld;
#include ("stdlib.hhf");
begin helloWorld;
stdout.put("Hello, World!", nl);
end helloWorld;
当我运行时hla helloWorld.hla
,我收到以下错误消息:
helloWorld.asm:66: Error: ambiguous operand size or operands invalid for 'push'
有问题的装配线如下:
pushd 0 ;/* No Dynamic Link. */
由于我对汇编语言非常熟悉,因此我不知道如何使这项工作发挥作用。我假设我的 gas 版本和 HLA 1.38 之间存在差异。所以问题仍然存在:现在呢?
编辑:我尝试只编译“程序”、“开始”和“结束”指令(消除它与标准库有关的可能性),并用一个实际上什么都不做的程序得到相同的结果。
我在 64 位 CrunchBang Linux 上。