此篇为《深入理解计算机系统》第四章内容。
定义一套指令集架构,包括定义不同的状态组件、指令集的编码、一系列编程规范、以及对异常的处理。
(图1 Y86-64指令集)
如图1所示,Y86-64架构只拥有由8字节整数组成的操作数,并有少数寻址模式,以及少量的操作集。图1左边的halt,nop, rrmovq rA, rB是右边编码的汇编表示。
几个细节需要清楚:
在x86-64中(Y86-64是x86-64的子集),movq(移动)被拆成了4个不同的指令:irmovq,rrmovq,mrmovq,rmmovq,清晰地表示了movq操作的来源和目的。指令的第一个字母表示来源,i代表immediate即立即数,r表示register寄存器,m代表memory内存;第二个字母表示目的,和来源不同,只有r和m能表示目的。分清这四种不同类型的数据传输,对如何实现它们是非常有帮助的。
有4个整数操作指令,即图1中的OPq。它们是addq,subq,andq,xorq。它们只对寄存