首页 理论教育 共享全局变量:ARM体系结构与嵌入式C编程技巧

共享全局变量:ARM体系结构与嵌入式C编程技巧

时间:2023-10-19 理论教育 版权反馈
【摘要】:在C语言程序中声明的全局变量可以被汇编程序通过地址间接地访问。具体访问方法如下:使用IMPORT伪操作声明该全局变量。使用LDR指令读取该全局变量的内存地址,通常该全局变量的内存地址值存放在程序的数据缓冲池中。根据该数据的类型,使用相应的LDR指令读取该全局变量的值,使用相应的STR指令修改该全局变量的值。对于结构型变量的数据成员,可以使用相应的LDR/STR指令来访问,这时必须知道该数据成员相对于结构型变量开始地址的偏移量。

共享全局变量:ARM体系结构与嵌入式C编程技巧

在C语言程序中声明的全局变量可以被汇编程序通过地址间接地访问。具体访问方法如下:

(1)使用IMPORT伪操作声明该全局变量。

(2)使用LDR指令读取该全局变量的内存地址,通常该全局变量的内存地址值存放在程序的数据缓冲池中。

(3)根据该数据的类型,使用相应的LDR指令读取该全局变量的值,使用相应的STR指令修改该全局变量的值。

各数据类型及其对应的LDR/STR指令如下:

(1)对于无符号的char类型的变量,通过LDRB/STRB指令来读/写。

(2)对于无符号的short类型的变量,通过LDRH/STRH指令来读/写。

(3)对于int类型的变量,通过指令LDR/STR来读/写。(www.xing528.com)

(4)对于有符号的char类型的变量,通过指令LDRSB来读取。

(5)对于有符号的char类型的变量,通过指令STRB来写入。

(6)对于有符号的short类型的变量,通过指令LDRSH来读取。

(7)对于有符号的short类型的变量,通过指令STRH来写入。

(8)对于小于8个字的结构型的变量,可以通过一条LDM/STM指令来读/写整个变量。

(9)对于结构型变量的数据成员,可以使用相应的LDR/STR指令来访问,这时必须知道该数据成员相对于结构型变量开始地址的偏移量

下面是一个在汇编程序中访问C语言程序全局变量的例子。程序中,变量global是在C语言程序中声明的全局变量。在汇编程序中首先用IMPORT伪操作声明该变量,再将其内存地址读入寄存器R1中;将其值读入到寄存器R0中;修改后,将寄存器R0的值赋予变量globol。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈