一下和C语言中的全局引用的区别,你知道吗?

下面总结一下汇编语言和C语言在汇编中引用全局标签的区别:

1018:0 1

1083:0 1

1142:0 1

1197:0 ABS

在汇编中,label == ,对label的引用就是对label对应的地址的操作。比如它的值是,如果要获取对应内存地址中的数据,需要ldr等指令。举个不恰当的例子,如果你也可以在汇编语言中进行 xy 之类的操作

= – = – = 4

这是绝对正确的。

但是,在 C 语言中,结果并非如此。在C中,汇编中对全局标号的引用的值不再是地址,而是地址对应内存单元中的数据arm汇编指令中的变量,所以对于C语言

= – = – = 1b070

在 C 语言中,对基本数据类型变量的引用的值是对应内存中的数据,而对于复杂数据类型和函数,标识符名称是指向首地址的指针,其值是它们的首地址地址。

或许可以这样理解,因为对于基本数据类型来说,它的地址和对应的内存单元中的数据是一一对应的,而引用变量的目的就是对数据进行操作在内存中,所以默认是获取对应的变量。内存单元中的数据;对于复杂的数据类型和函数,不可能用一个地址获取所有数据arm汇编指令中的变量,所以先标出首地址,利用地址的线性连续性,通过首地址获取所有数据。数据,这是通过操作指针(地址)来实现的。

图片[1]-一下和C语言中的全局引用的区别,你知道吗?-4747i站长资讯

文章来源:http://www.eepw.com.cn/article/201611/322310.htm

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享