位置:51电子网 » 技术资料 » EDA/PLD

从汇编程序中访问C程序变量

发布时间:2008/12/23 0:00:00 访问次数:1277

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

  ·使用import伪指令声明该全局变量。

  ·使用ldr指令读取该全局变量的内存地址,通常该全局变量的内存地址值存放在

  程序的数据缓冲池中。

  ·根据该数据的类型,使用相应的ldr指令读取该全局变量的值;使用相应的str

  指令修改该全局变量的值。

  各数据类型及其对应的ldr/str指令如下。

  ·对于无符号的char类型的变量通过指令ldrb/strb来读写。

  ·对于无符号的short类型的变量通过指令ldrh/strh来读写。

  ·对于int类型的变量通过指令ldr/str来读写。

  ·对于有符号的char类型的变量通过指令ldrsb来读取。

  ·对于有符号的char类型的变量通过指令strb来写入。

  ·对于有符号的short类型的变量通过指令ldrh来读取。

  ·对于有符号的short类型的变量通过指令strh来写入。

  ·对于小于8个字的结构型变量,可以通过一条ldm/stm指令来读/写整个变量。

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

  下面是一个在汇编程序中访问c程序全局变量的例子。程序中变量globv1是在c程序中声明的全局变量。在汇编程序中首先用import伪指令声明该变量;再将其内存地址读入到寄存器ri中;然后将其值读入到寄存器r0中;修改后再将寄存器r0的值赋予变量globv1。本例中的程序如下。



  欢迎转载,信息来自维库电子市场网(www.dzsc.com)



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

  ·使用import伪指令声明该全局变量。

  ·使用ldr指令读取该全局变量的内存地址,通常该全局变量的内存地址值存放在

  程序的数据缓冲池中。

  ·根据该数据的类型,使用相应的ldr指令读取该全局变量的值;使用相应的str

  指令修改该全局变量的值。

  各数据类型及其对应的ldr/str指令如下。

  ·对于无符号的char类型的变量通过指令ldrb/strb来读写。

  ·对于无符号的short类型的变量通过指令ldrh/strh来读写。

  ·对于int类型的变量通过指令ldr/str来读写。

  ·对于有符号的char类型的变量通过指令ldrsb来读取。

  ·对于有符号的char类型的变量通过指令strb来写入。

  ·对于有符号的short类型的变量通过指令ldrh来读取。

  ·对于有符号的short类型的变量通过指令strh来写入。

  ·对于小于8个字的结构型变量,可以通过一条ldm/stm指令来读/写整个变量。

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

  下面是一个在汇编程序中访问c程序全局变量的例子。程序中变量globv1是在c程序中声明的全局变量。在汇编程序中首先用import伪指令声明该变量;再将其内存地址读入到寄存器ri中;然后将其值读入到寄存器r0中;修改后再将寄存器r0的值赋予变量globv1。本例中的程序如下。



  欢迎转载,信息来自维库电子市场网(www.dzsc.com)



相关IC型号

热门点击

 

推荐技术资料

声道前级设计特点
    与通常的Hi-Fi前级不同,EP9307-CRZ这台分... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!