0

我在文件中有以下非常简单的 Y86 程序foo.ys

irmovl $1, %eax

运行以下命令:

$ yas foo.ys

我从以下(完全无用的)反馈中得到yas

Invalid Line

所以——我有几个问题:

  1. Y86 文档在哪里?
  2. 上述程序有什么无效之处?
4

2 回答 2

1

看起来您使用的是 64 位版本,y86-64。我已经检查过,这实际上会产生给定的错误消息。虽然 x86-64 确实支持 32 位,但显然 y86-64 不支持。您应该irmovq $1, %rax改用(注意指令后缀和寄存器前缀的变化)。

于 2018-03-21T15:32:34.867 回答
-1

看起来 Y86应该是 IA-32 的子集,可以在此处找到其文档

似乎,在 IA-32 中,以l不移动长数据类型结尾的移动指令;他们做有条件的移动和与 Y86 无关的事情。

然而,有些版本的 Y86 支持irmovl,有些不支持。

如果您使用的是 64 位版本yas,请使用四字指令和地址:

irmovq $1, %rax
于 2018-03-21T15:03:52.590 回答