所以,如果你有
myarray: .half 71, 92, 24, 59, 0x68, 10, 35, 34
下面的代码行会将myarray中的元素数分配给符号N。
.equ N, (. - myarray) / 2
我不明白 这是如何运作的。什么是。 - 部分代码真的有用吗?
(在带有MPLAB 1.33 IDE的PIC32MX360F256L上)
答案 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'的起始地址。