有人可以向我解释.equ N,(。 - myarray)/ 2吗?

时间:2014-11-05 09:08:01

标签: assembly mips mips32

所以,如果你有

myarray:   .half 71, 92, 24, 59, 0x68, 10, 35, 34

下面的代码行会将myarray中的元素数分配给符号N。

.equ N, (. - myarray) / 2

我不明白 这是如何运作的。什么是。 - 部分代码真的有用吗?

(在带有MPLAB 1.33 IDE的PIC32MX360F256L上)

2 个答案:

答案 0 :(得分:2)

您没有指定您正在使用的汇编程序,因此可能会有所不同。我假设您有某种GNU as - 兼容,对于MIPS,它支持.half指令来声明半字。

equ指令将符号N设置为表达式(. - myarray) / 2的值。

反过来,(. - myarray)myarray(您声明的数组的开头)和地址.之间的差异,as汇集到的当前地址

由于myarray是一个半字数组(16位宽),除以2会使N等于myarray元素的数量,类似于C表达式:sizeof myarray / sizeof *myarray

答案 1 :(得分:0)

它将N定义为' myarray'的大小的一半。现在当'myarray'的元素出现时是(我猜)半字会使符号N成为数组元素的数量。 ' - '是负号(。 - myarray)是当前位置(在数组之后)减去' myarray'的起始地址。