汇编语言和C语言混合编程中,在C语言中通过全局变量来引用汇编中的数据定义非常普遍,然而却存在同名不同义的陷阱。
1 测试代码
在汇编语言中的定义整数变量studentID,并赋初值,如下:
.global studentID
.data
studentID:
.word 12345678
.text
ldr r0, =studentID /* studentID被当做内存地址 */
ldr r0, [r0] /* 执行后,r0=12345678 */
假设链接后,studentID所代表地址为0x30000000。
在C语言中引用studentID,如下: