问题标签 [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.
y86 - CSAPP与pushtest结果混淆练习题4.7
Y86
类似于x86-64
。为什么函数 pushtest 总是返回零?
正如我所知,x86-64
Push 会先递减 ESP 寄存器而不是写入。先弹出读取,然后递增 ESP 寄存器。
y86 - 为什么这个 Y86-64 代码段无法执行预期的 jg 分支?
这是Y86代码供参考
作为参考,我正在使用这个Y86-64 模拟器。在完成第一个内部循环序列后,就会出现问题。%rsi 中的寄存器值为 4,我刚刚在处理 jg 指令之前从 %rsi 的前一个值中减去了 1,但它仍然没有跳转到 outer_loop。
c - 将 C 函数转换为 Y86 函数
这里的第一个问题,如果我做错了什么,请告诉我。
本质上,我在将 C 函数转换为 Y86 函数时遇到了一些麻烦。我不知道如何将 C 函数参数放入 Y86 的寄存器中(不知道我是否正确描述了这一点,但请检查下面的尝试)。请记住,我对 C 和 Y86 比较陌生。
假设我在 C 中有一个函数:
现在我试着把它放在 Y86 中:
我假设 Y86 将我的输入字面上视为 0xa0(十六进制),但我不知道该怎么做。
c - 在 C 中实现 Y86 Fetch 指令
对不起,这个问题很长,但我真的迷失了这个任务。我基本上被要求实现 fetchInstruction。我猜,另外两个是我应该使用的辅助函数。我在下面附上了 fetchInstruction.c 代码和 instruction.h 代码。我不期待直接的答案和完整的代码,但是有人可以指出我如何开始这个正确的方向吗?对于那些想知道的人,programMap 指的是内存本身,而 location 是指令的位置。
loops - 如何在 y86 中编写 for 循环
我正在尝试在 y86 中编写等效的 for 循环,但由于某些奇怪的原因,它只迭代一次。请注意,y86 没有 cmp 指令,所以我使用 push、sub 和 pop。
performance - Y86 架构立即数 VS 寄存器算术效率问题
我正在与 Y86 程序的计算机体系结构课程中的一个团队合作,以实现乘法函数 imul。我们有一个可以工作的代码块,但我们正在努力使其尽可能高效地执行。目前,对于 imul,我们的块看起来像这样:
现在我们最好的想法是使用立即算术指令(isubq 等)而不是普通的 OPq 指令,并将常量设置到寄存器中并使用这些寄存器。在这种特定情况下,这种方法会更有效吗?非常感谢!
y86 - 为什么这里传递了错误的参数?
我是 Y86 的新手,正在尝试编写递归乘法函数,但不断传递错误的参数。
调用乘法函数的代码:
和实际的乘法代码:
我为 x 和 y 都传入了 4,因为调用它们的函数是一个数字的平方,所以它们应该是相同的,但是在一行:
它传入 2 而不是我最初放入的 4,最终返回值 13 而不是 16。
根据我对 Y86 的有限理解,“mrmovl 8(%ebp),%ebx”应该返回我设置为等于 Y 的第二个参数,“mrmovl 12(%ebp),%edx”应该返回等于 X 的第一个参数,两者都作为 4 传入。
architecture - y86 指令集造成混乱
我是计算机体系结构的初学者。我尝试学习 Y86 架构。我得到了 Y86 架构的参考资料。我没看懂图片Stage computation: Arith/log. ops
。我研究过这本书Computer Systems: A programmer's Perspective
,但我不清楚
- M1[电脑]
- M1[PC+1]等线
根据本书,M1[x] 表示访问(读取或写入)内存位置 x 的 1 个字节。这意味着 M1[PC] 意味着访问(读取或写入)内存位置程序计数器的 1 个字节。这有意义吗?
- valP <- PC+2
但是为什么它是 PC+2 而不是任何其他整数。
我也是从书里知道的In the fetch stage, we do not require a constant word, and so valP is computed as PC + 2
但话又说回来It is also possible fetches a 4byte constant word valC
所以假设,在上面的例子中,在 rA:rB<-M1[PC+1] is valC<- M4[PC+2] 之后还有另一行,那么下一行 valP<-PC +______
在这里,我尝试按照我在此处引用的链接解决一个小程序
已编辑:我编辑了这个问题并尝试了解我从链接中获得了多少知识。
我的代码好吗?