基础 Y86:文档和基本要求
Posted
技术标签:
【中文标题】基础 Y86:文档和基本要求【英文标题】:Fundamental Y86 : Documentation and basic requirements 【发布时间】:2018-03-21 14:26:21 【问题描述】:我在foo.ys
文件中有以下非常简单的 Y86 程序:
irmovl $1, %eax
运行以下命令:
$ yas foo.ys
我从yas
得到以下(完全没用的)反馈:
Invalid Line
所以--我有几个问题:
-
Y86 文档存放在哪里?
上述程序有什么问题?
【问题讨论】:
1. google,例如y86tutoring 2. 什么都没有,在这里工作。 主流(真实)架构可能更复杂,但它们通常具有更好的工具链,可以提供(稍微)更有用的错误消息。汇编器错误消息通常很模糊,但不是那么模糊。 @Jester - 你用的是什么版本的 yas? 我下载了this one,没有版本号。 【参考方案1】:看起来您使用的是 64 位版本,y86-64。我已经检查过,这实际上会产生给定的错误消息。虽然 x86-64 确实支持 32 位,但显然 y86-64 不支持。你应该改用irmovq $1, %rax
(注意指令后缀和寄存器前缀的变化)。
【讨论】:
你能看看***.com/questions/70919423/…【参考方案2】:看起来 Y86 应该是 IA-32 whose documentation can be found here 的一个子集。
似乎,在 IA-32 中,以 l
结尾的移动指令不会移动长数据类型;他们会做有条件的动作和与 Y86 无关的事情。
然而,有些版本的 Y86 支持irmovl
,有些不支持。
如果您使用的是 64 位版本的 yas
,请使用四字指令和地址:
irmovq $1, %rax
【讨论】:
听起来你有一个 64 位版本。那些使用四字,但你的寄存器应该是rax
而不是eax
。
@StudentsTea:它是 IA-32(英特尔架构),而不是 AI。不是我的反对意见,但这个答案并不是真的有用,你可能应该删除它。 (它也有错误。x86 没有movl
,你在想cmovl
。)Intel x86 文档对 y86 并不是很有用。也许 AT&T 语法文档会,但 y86 或 y86-64 仅支持固定操作数大小(或者也可能是字节?)真正的 x86 手册只会令人困惑。以上是关于基础 Y86:文档和基本要求的主要内容,如果未能解决你的问题,请参考以下文章
2017-2018-20155336 《信息安全系统设计基础》第七周学习总结