您的位置:首页 > 理论基础

程序的机器级表示 读深入理解计算机系统

2011-11-17 14:23 621 查看
1:程序计数器(称为%eip)表示将要执行的下一条指令在存储器中的地址。

2:整数寄存器文件包含8个被命名的位置,分别存储32位的值。这些寄存器可以存储地址(对应于C的指针)或整数数据。有的寄存器用来记录某些重要的程序状态,而其他的寄存器用来保存临时数据,例如过程的局部变量。

3:条件码寄存器保存着最近执行的算术指令的状态信息。它们用来实现控制流中的条件变化,比如说用来实现if或while语句。

4:浮点寄存器文件包含8个位置,用来存放浮点数据。

虽然C提供了一种模型,可以在存储器中声明和分配各种数据类型的对象,但是汇编代码只是简单地将存储器看成一个很大的、按字节寻址的数组。C中的聚集数据类型,例如数组和结构,在汇编代码中使用连续的字节表示的。即使是对标量数据类型,汇编代码也不区分有符号或无符号整数,不区分各种类型的指针,甚至于不区分指针和整数。

程序存储器(program memory)包含程序的目标代码,操作系统需要的一些信息,用来管理过程调用和返回的运行时栈,以及用户分配的存储器块(比如说用malloc库函数分配的)。



上图是链接之后产生的代码。链接器将代码的地址移到一段不同的地址范围(如链接前的逻辑地址是1~10,链接后是物理地址);链接器确定存储全局变量的地址(如第六行的0X8049464)。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: