《深入理解计算机系统》7
Contents
总结第三章,程序的机器级表示
介绍了C语言抽象层下面的机器级结构
主要分为几部分,数据分为整数与浮点数,两者分别有不同的寄存器,原理相同
以整数介绍为主
数据的格式,字节,字,双字,四字
然后是访问信息,对于数据的访问与加载,有操作数指示符,寄存器,内存,直接数的表示方法
传送指令 mov,压入和弹出栈指令pop,push(这个为后面过程铺垫)
接着是算术与逻辑,一元,二元操作,移位等。
接着是控制,几个条件判断的寄存器,命令访问条件码,跳转命令jump,2种实现条件分支的方法,一种是条件控制,类似jump,goto,一种是用条件传送,第二种更符合现在处理器高效的风格,因为不需要跳转,局部性原理,效率更高,但只有部分符合条件,不是所有情况都能适用。
然后就是控制的实现,一种是do-while,while,for等循环,1个是switch的实现。
下一部分是过程,如果寄存器不够或者的方法间互相调用,就会用到过程。主要分为三部分,传递控制,传递数据,和分配和释放内存。
使用%rsp栈指针,$rip来指示栈帧的位置,是用call和ret转移控制。
下一部分是数组,主要是指针的处理,嵌套数组,定长数组,变长数组
然后是异构数据结构,结构struct,联合Union
最后一部分是浮点数,与整数原理相通。