问题标签 [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.
c - C中的Y86处理器帮助!卡在 loader.c 文件上
这将是一个大问题(至少对我来说似乎是这样),所以请耐心等待。我们正在用 C 语言制作一个 y86 模拟器,这部分任务应该打开一个文件,将其加载到内存中,执行转储,然后退出。提供了 main 方法来做这些事情,我们只是应该创建 loader.c 和 loader.h 文件来实际执行加载。如果加载成功(输入文件没有错误),加载函数返回 true(1),否则返回 false(0)。现在,我被困在加载功能上,我认为问题出在 loader.c 的第 58-67 行左右。我没有正确调用该方法,但我无法弄清楚如何正确格式化数字。这是我第一次在 C 中工作,所以对我来说仍然相当混乱。如果需要,我可以提供更多代码。到目前为止,我已经包含了 loader.c,loader.h、memory.c 和 memory.h。Bool.h 包括在内,但它只是真假的 typedef,所以我想我可以把它排除在外。如果这有点多,我很抱歉,但我完全被难住了,我不知道还能去哪里。非常感谢您提供的任何帮助,我们将不胜感激!
装载机.c:
装载机.h:
内存.c:
内存.h:
assembly - Y86,获得 ADR。不明白为什么
所以基本上在这里学习y86。我有这个 C 代码,我正在尝试转换为 y86 程序集。我不断收到此错误:
基本上我试图翻译这个c代码:
转 Y86 代码:
谁能告诉我错误来自哪里?我知道 ADR 意味着程序正在尝试从无效的内存地址写入或读取。谢谢!
c - Y86 和程序混淆
我对我的计算机体系结构教科书中的这个示例程序感到困惑。
这是C代码...
这是生成的 Y86 代码...
我的问题是 0x046
为什么将 Start 设置为堆栈指针前面的 8 个字节?我想我对一切都在哪里感到困惑。就像堆栈正在查看 0x100 一样,为什么 %ecx 被设置为距离那里 8 个字节,然后当 Count 已经被设置为距离 %ebp 12 个字节时增加 4?我对堆栈指针到底在看什么的理解可能是错误的。
assembly - 基本装配标签和跳跃
所以我正在做一些组装,在我直接进入任何中间阶段之前我正在测试一些东西。
我正在尝试做的事情:用户输入一个数字 0 或 1。输出是数字和数字开头的任何字符(O 表示一或 Z 表示零)
所以 0 的输出应该是 0Z 和输出1 应该是 1O。
我遇到了问题,因为它只适用于 1,它不会为 0 输出任何内容。我确信这是一个非常基本的错误,但如果有人能解释问题所在,那就太好了。
另外,如果有人愿意推荐他们初学者的组装资源,我将不胜感激。我找不到任何我特别喜欢的
谢谢
y86 - 从内存发送 Y86 .long -5 以注册为 -1
在我的代码中,每当我将一个负数从输入数组导入到不同的寄存器时,无论负数是什么,该值始终为 0xFFFFFFFF。有没有其他人遇到过这个问题?这是代码:
我正在用 yas 编译代码并用 ssim 进行测试。
compilation - Y86 编译器中的“找不到标签”错误
我正在用 Y86 编写一个程序,但我的代码行设置堆栈和基指针时不断收到错误“找不到标签”。我的代码是:
这是它在我的笔记中的显示方式,但是当我尝试编译时,我得到了
我尝试将 .pos 0 行放在 init 函数中(我认为它可能会有所帮助)以及简单地将 init: 行放在一起,但我仍然遇到同样的问题。
y86 - Y86 中的否定数字
我知道有很多方法可以做到这一点,我正在努力寻找最有效的方法。
我试图避免的一种特殊方法是从零中减去数字,因为它涉及将值从曾经为 0 的寄存器传输回包含预先否定的数字的寄存器,这将是一种痛苦。
y86 - 无符号乘法 Y86 没有显示输出
这是一个非常简单的程序,可以对我为 Y86 编写的一对整数(5 乘 10)进行无符号乘法运算。
当我运行代码时,结果如下所示:
计算结果的寄存器 ecx 是十六进制的 32,所以我肯定知道 mult 循环已按预期执行,但没有任何内容输出到 OutputArray,我不明白为什么。
assembly - 在 Y86 汇编中使用全局变量
我正在尝试编写一个程序来创建 x 和 y 之间所有包含整数的和,其中 sum、y 和 x 是全局变量。当我尝试将 x 和 y 分配给本地寄存器时遇到问题(我的模拟器将 0x60 和 0x64 的值分配给本地寄存器,而不是 1 和 4)以及获取总和并将其传输到sum 的全局变量。通常我会尝试在网上找到有用的指南,但 Y86 是一种很少使用的语言,几乎没有。
我的代码:
c - Y86 1 步停止异常 HLT
我将一个简单的 c 程序翻译成 IA32,然后将其音译成 Y86,但由于我刚刚学习 Y86,所以我收到一个我不理解或不知道如何调试的错误。错误是:
该程序应该将 i 初始化为 0,然后继续执行 for 循环,直到 i 大于或等于 5 并每次递增 i。在 for 循环中,我设置 j 等于 i*2,k 等于 j+1。我的 Y86 代码如下:
我可以提供我音译的 C 代码和 IA32 代码,如果它可以帮助您回答我的问题,我真的需要一些帮助,谢谢。