Y86汇编全局变量

时间:2015-11-14 22:48:24

标签: assembly y86

我正在努力让全局变量在我的Y86任务中正常工作。不幸的是,我们提供的唯一例子是IA-32装配。我搜索了最近几个小时但无济于事。这是我知道的非常基础,但我在Y86是一个完整的新手。

我是"宣布"我的变量如下

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

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

我尝试过使用mrmovl,但我不确定mrmovl的全局变量的语法。

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

1 个答案:

答案 0 :(得分:1)

irmovl正如名称所说 i mmediate to r egister。 您希望mrmovl m emory to r egister。

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

irmovl x, %edx     # load address
mrmovl (%edx), %edx # fetch value