C代码中如何使用链接脚本中定义的变量
来源:互联网 发布:电脑用户名及域名 编辑:程序博客网 时间:2024/04/29 18:25
原文内容:http://www.100ask.org/bbs/forum.php?mod=viewthread&tid=16231&page=1&authorid=2
--------------------------------------------------------------------------------------------------------------------------
参考文章:https://sourceware.org/ml/binutils/2007-07/msg00154.html
在链接脚本中,经常有这样的代码:
其中__bss_start, _end 表示BSS段的起始、终止地址。
我们想对这段空间清零时,
1.在汇编代码中,可以直接引用__bss_start, _end,比如:
2. 在C代码中,我们不能直接引用它们,要这样做:
__bss_start, _end不是表示某个值吗?在C代码中为什么要使用取址符号 & ?
原因:
一.
在C代码中,这样的语句:
会导致2件事情发生:
1. 在代码中,留出4字节的空间,保存数值1000
2.在C语言的symbole talbe,即符号表中,有一个名为foo的项,它里面存有那4字节空间的地址。
我们执行 foo = 1时,会先去符号表中找到foo对应的地址,然后把数值1填到那个地址对应的内存;
我们执行 int *a = &foo时,会直接把符号表中foo的地址,写给a。
二.
在链接脚本中,假设
__bss_start并不是一个变量,它只是一个值,并不需要在内存中留出一段空间来保存它;
在C语言中,符号表中会有一个名为__bss_start的项,这个项目中的值(地址值)是1000;
注意,这个1000并没有实际存在的内存。
三.
所以:在C语言中,要去使用链接脚本中定义的值时,应该这样做:
使用取址符号&去得到它在符号表中的值。
阅读全文
1 0
- C代码中如何使用链接脚本中定义的变量
- iOS中C中变量的定义
- Simulink中如何定义变量的初始值
- C中变量的定义?声明?
- C语言中变量定义的位置
- C中定义变量的有效范围
- C语言中变量定义的位置
- C语言中关于变量的定义
- C语言中变量的定义&声明
- C中变量的声明与定义
- Excel中如何定义一个变量在表达式中使用
- C语言学习笔记----伊能C语言学习笔记----如何在一个文件中使用另一个文件中定义的变量呢??
- c中变量定义问题
- 在u-boot C语言文件中使用汇编文件中定义的变量
- Linux 脚本中使用变量的几个问题
- C/C++中如何使用Luajit脚本
- C/C++中如何使用Luajit脚本
- C语言和C++语言对于代码块中定义变量位置的区别
- MySQL 笔记 —— 时间函数、时间比较
- 加1乘2平方
- mysql5.7.20的安装以及遇到的问题(一)
- HDU-1584 蜘蛛牌【dfs】
- Mac anaconda下安装opencv3
- C代码中如何使用链接脚本中定义的变量
- 用字符串常量对字符数组进行初始化
- fopen,open,mmap函数在Linux文件编程中的应用总结
- Enterprise Architect 13 官方中文版下载附安装教程
- C语言SOCKET编程指南
- 智能家居简单实现---使用ESP8266简单实现和APP通讯
- org.hibernate.AssertionFailure: null id in xxx entry (don't flush the Session after an except)解决方法
- DOM属性
- Linux 命令行 rm 无法删除文件