如何区分数据和指令
2017-10-10 11:06
387 查看
程序分为数据和指令,以一段程序为例:
该段代码中包括全局变量和局部变量。其中全局变量又包括普通全局变量和静态全局变量,普通全局变量为:g_date1、g_date2、g_date3,静态全局变量为:g_date4、g_date5、g_date6。同样的,局部变量也分为普通局部变量和静态局部变量,普通局部变量为:a、b、c,静态局部变量为d、e、f。有些变量是初始化的,有些则没有初始化,哪些是数据,又有哪些是指令?
数据包括全局变量(包括就普通和静态两种)和静态局部变量,而指令则为普通局部变量。对可执行文件而言,存储时,初始化且值不为0的数据放在.date区(即数据段),未初始化(包括初始化为0)的数据放在.bss区,指令放在.text区。特殊的,没有被初始化的普通全局变量在编译文件中存放在.comment区,在可执行文件中存放在.bss区。
程序运行,即进程启动之后,.bss会被清零。
int g_date1 = 10; int g_date2 = 0; int g_date3; static int g_date4 = 10; static int g_date5 = 0; static int g_date6 ; int main() { int a = 10; int b = 0; int c; static int d = 10; static int e = 0; static int f ; return 0; }
该段代码中包括全局变量和局部变量。其中全局变量又包括普通全局变量和静态全局变量,普通全局变量为:g_date1、g_date2、g_date3,静态全局变量为:g_date4、g_date5、g_date6。同样的,局部变量也分为普通局部变量和静态局部变量,普通局部变量为:a、b、c,静态局部变量为d、e、f。有些变量是初始化的,有些则没有初始化,哪些是数据,又有哪些是指令?
数据包括全局变量(包括就普通和静态两种)和静态局部变量,而指令则为普通局部变量。对可执行文件而言,存储时,初始化且值不为0的数据放在.date区(即数据段),未初始化(包括初始化为0)的数据放在.bss区,指令放在.text区。特殊的,没有被初始化的普通全局变量在编译文件中存放在.comment区,在可执行文件中存放在.bss区。
程序运行,即进程启动之后,.bss会被清零。
相关文章推荐
- 指令和数据都用二进制代码存放在内存中,从时空观角度回答CPU如何区分读出的代码是指令还是数据
- 我和朋友谈论计算机是如何区分指令和数据的经历
- CPU如何区分读出的代码是指令还是数据
- 机器如何区分和判定指令和数据 .
- 机器如何区分和判定指令和数据
- 机器如何区分和判定指令和数据
- 指令和数据都用二进制代码存放在内存中,从时空观角度回答CPU如何区分读出的代码是指令还是数据
- 计算机是如何区分读到的内存是指令还是数据
- 计算机如何区分存储器中的指令和数据
- 机器如何区分和判定指令和数据
- cpu如何区分指令和数据
- 如何通过adb指令判断手机终端走的什么数据业务
- 计算机CPU指令的32位、64位是如何区分呢?
- 单片机指令中如何区分是字节传送和位传送
- 如何不区分大小写,不重复的select数据,并去除其中不想要的项
- 如何区分mp4格式里面mdat中的音频和视频数据
- 计算机区分指令和数据?
- 指令中directive 如何获取父级中通过$http获取的数据
- 考虑下列生成二进制的过程,编译器被用来生成单个单元的目标代码,链接器被用来将多个目标单元合并成一个程序二进制,链接器如何改变指令和数据到内存地址的绑定?需要什么信息从编译器传递给链接器,以协助完成链接
- [原创]今天看到一RPG处理数据的题目,不知各位将如何解答和解释这几条常见的指令?