1

我正在努力让全局变量为我的 Y86 分配正确工作。不幸的是,我们提供的唯一示例是在 IA-32 汇编中。我已经搜索了最后几个小时,但无济于事。我知道这是非常基本的,但我是 Y86 的新手。

我正在“声明”我的变量如下

.align 4
x: .long 1
y: .long 4

当我在操作中使用它们时,例如irmovl x, %edx我看到将值 380 分配给 edx 寄存器而不是值 4。我认为正在发生的事情是我将内存位置分配给了寄存器而不是值。将全局变量的值设置为寄存器的正确语法是什么?

我曾尝试使用 mrmovl 代替,但不确定带有全局变量的 mrmovl 的语法。

mrmovl x, %edx 给我错误“x 不是数字”

4

1 回答 1

1

irmovl顾名思义,立即注册。你想要注册mrmovl内存

至于语法,由于 y86 确实支持置换,我希望mrmovl x, %edx能够工作。你说它没有,作为一种解决方法,你可以使用 2 条指令:

irmovl x, %edx     # load address
mrmovl (%edx), %edx # fetch value
于 2015-11-14T22:50:34.723 回答