问题标签 [y86]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2455 浏览

c - 将 x86 转换为 Y86

我试图弄清楚将此 x86 汇编代码转换为 Y86 形式:

给定 c 程序:

生成以下 x86-64 汇编代码:

如何将其转换为执行相同操作的 Y86-64 汇编代码?

谢谢!

0 投票
0 回答
55 浏览

assembly - Y86-64 堆栈设置的起始位置地址中的前导零

我对一些 Y86 代码有疑问

如果我们得到一个堆栈从 pos .200 开始,我试图理解程序 yas 输出开头的这一行(这是 Bryant 文本中的 sum 程序,第 368 页第 4 章)

我知道对于 irmovq 它的设置就像

那么如果我们将堆栈指针设置为地址 0x200,为什么在 4 之后会有一个前导零?为什么不是 30f400200...?我猜它是为了对齐但没有填充改变地址的值?

0 投票
1 回答
568 浏览

assembly - 试图理解我做错了什么 - 链表 Y86 的迭代总和

我正在为课堂实验室做这个,但我没有找到我要去的地方。如果我用 l 而不是 q 为我的所有指令添加后缀(例如 -andl 而不是 andq , rrmovl 而不是 rrmovq ),但不是用 q 后缀,程序就可以工作。我真的很感激一些关于我做错了什么的指针。

堆:

0 投票
1 回答
689 浏览

assembly - 了解堆栈和基指针 Y86 - 链表总和

注意:这是一个类。我只是想了解 rsp 和 rbp 是如何工作的,这样我就可以了解我的代码的哪一部分被搞砸了。对不起,我是新手。谢谢你的帮助。

所以我正在编写 Y86 代码来查找链表的节点总和

我怀疑我在将值存储在由于递归而被弄乱的堆栈上时犯了一个错误。对不起,但我真的不明白这一点,也想。任何帮助表示赞赏。谢谢!

它最终应该在 rax 中给我什么:0x0000cba 我得到的是 0x0000040

在此处输入图像描述

0 投票
1 回答
1267 浏览

assembly - pushl %esp 在存储之前还是之后更新 ESP?

Y86 指令将pushl堆栈指针减 4 并将寄存器值写入内存。所以不清楚处理器在执行指令时应该做什么pushl %esp,因为被推送的寄存器正在被同一条指令改变。可能发生两种可能的事件:

(1) 推动 的原始值%esp,或 (2) 推动 的减量值%esp

鉴于此,我们如何修改此代码等效项pushl REG以解释和适应这些歧义(因为 REG 可以是 %esp 以及任何其他寄存器)?:


类似地,指令popl %esp可以设置%esp为从内存中读取的值,也可以设置为递增的堆栈指针。如何更改此代码以适应这些歧义?:

0 投票
0 回答
488 浏览

assembly - 汇编 x86 到 y86 转换

我试图从 x-86 获得一段 y-86 代码的等效语句,但我有点怀疑,我只是想确定一下。因此,使用以下 x-86 指令,addq 16(%rbp),%rax.

我正在翻译 的 x-86 代码addq 16(%rbp),%rax,它表示要计算 的值rbp + 16,然后将刚刚计算的地址处的值相加,并将其添加到rax,存储rax,对吗?

我的问题是下面的 y-86 会做同样的事情吗?

0 投票
2 回答
215 浏览

assembly - 基础 Y86:文档和基本要求

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

运行以下命令:

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

所以——我有几个问题:

  1. Y86 文档在哪里?
  2. 上述程序有什么无效之处?
0 投票
1 回答
1042 浏览

arrays - 汇编语言中的多维数组 (2x2) 初始化 - Y86

我是汇编语言的新手,我使用的是一个更简单的版本,叫做 Y86,本质上是一样的。我想知道如何以这种格式初始化多维数组,特别是制作一个 2x2。稍后使用 2x2 我将添加两个矩阵(或本例中的数组)。谢谢!

0 投票
1 回答
948 浏览

arrays - 访问数组内的数组元素 - Y86 程序集

我想知道在汇编中(在我的情况下为 Y86),是否可以在数组中包含一个数组?如果是,我将如何访问该数组中的元素。我知道您取消引用数组以获取它们的元素,但这只是堆栈中的一个数组。有没有办法在数组内获取数组内的元素。

示例,因为这很难解释:

正常抓取元素:

现在说我有这个:

我可以访问 array2 元素一个然后访问 array1 的元素吗?

0 投票
1 回答
1036 浏览

assembly - 为什么 0xffffffc 是一个无效的访问地址?

嗨,我正在阅读一本教科书,它说程序不允许访问大于的地址0xc0000000(就像 32 位版本的 Linux 一样),所以下面的汇编代码是无效的:

我很困惑。我有两个问题:

  1. 为什么不允许程序访问大于 的地址0xc0000000,该地址不是0xc0000008有效地址吗?

  2. 如果程序真的不允许访问大于0xc0000000,0xfffffffc小于(小于) 的地址0xc0000000,那为什么会失败呢?