我在文件中有以下非常简单的 Y86 程序foo.ys
:
irmovl $1, %eax
运行以下命令:
$ yas foo.ys
我从以下(完全无用的)反馈中得到yas
:
Invalid Line
所以——我有几个问题:
- Y86 文档在哪里?
- 上述程序有什么无效之处?
看起来您使用的是 64 位版本,y86-64。我已经检查过,这实际上会产生给定的错误消息。虽然 x86-64 确实支持 32 位,但显然 y86-64 不支持。您应该irmovq $1, %rax
改用(注意指令后缀和寄存器前缀的变化)。
看起来 Y86应该是 IA-32 的子集,可以在此处找到其文档。
似乎,在 IA-32 中,以l
不移动长数据类型结尾的移动指令;他们做有条件的移动和与 Y86 无关的事情。
然而,有些版本的 Y86 支持irmovl
,有些不支持。
如果您使用的是 64 位版本yas
,请使用四字指令和地址:
irmovq $1, %rax