我很难让全局变量在我的Y86任务中正确工作。不幸的是,我们得到的唯一例子是在IA-32汇编中。我已经搜寻了几个小时,但没有结果。这是非常基本的,我知道,但我是一个完全的新手在Y86。
我正在“声明”我的变量如下
.align 4
x: .long 1
y: .long 4当我在像irmovl x, %edx这样的操作中使用它们时,我看到值380被分配给edx寄存器,而不是值4。我认为正在发生的事情是将内存位置分配给寄存器而不是值。将全局变量的值设置为寄存器的正确语法是什么?
我试过使用mrmovl,但不确定带有全局变量的mrmovl语法。
mrmovl,%edx给我错误“x不是一个数字”
发布于 2015-11-14 22:50:34
顾名思义,irmovl是i中介到register。您需要mrmovl,因为这是memory to register。
至于语法,因为y86确实支持置换,所以我希望mrmovl x, %edx能够工作。你说它没有,作为一个解决办法,你可以使用2条指令:
irmovl x, %edx # load address
mrmovl (%edx), %edx # fetch valuehttps://stackoverflow.com/questions/33714298
复制相似问题