我在文件foo.ys
中有以下非常简单的Y86程序:
irmovl $1, %eax
运行以下命令:
$ yas foo.ys
我从yas
得到以下(完全无用的)反馈:
Invalid Line
所以 - 我有几个问题:
答案 0 :(得分:1)
看起来您使用的是64位版本,y86-64。我已经检查过,实际上会产生给定的错误消息。虽然x86-64支持32位,但显然y86-64不支持。您应该使用irmovq $1, %rax
代替(注意更改指令后缀和寄存器前缀)。
答案 1 :(得分:-1)
看起来Y86 假定是IA-32的一个子集,whose documentation can be found here。
似乎在IA-32中,移动以l
结尾的指令不会移动长数据类型;他们做有条件的举动和与Y86无关的事情。
然而,某些版本的Y86支持irmovl
,有些版本不支持。
如果您使用的是64位版本的yas
,请使用四字说明和地址:
irmovq $1, %rax