今天看arm11的裸机程序的反汇编代码,了解了关于PC寄存器指向的问题,特地记下来。
由于ARM11有两套不同的指令集,分别为ARM指令集,指令长度为32位,以字对齐;
Thumb指令集,指令长度为16位,以半字对齐。
由于ARM采用多级流水线技术,因此一条流水线上可能同时包含了两种指令集,因此
流水线最小单元是以Thumb指令集为基准的,故在ARM指令集而言,PC总是指向当前
指令之后的两条指令的地址,而在Thumb指令集下,PC则是指向当前指令的下一条指令的地址。
今天看arm11的裸机程序的反汇编代码,了解了关于PC寄存器指向的问题,特地记下来。
由于ARM11有两套不同的指令集,分别为ARM指令集,指令长度为32位,以字对齐;
Thumb指令集,指令长度为16位,以半字对齐。
由于ARM采用多级流水线技术,因此一条流水线上可能同时包含了两种指令集,因此
流水线最小单元是以Thumb指令集为基准的,故在ARM指令集而言,PC总是指向当前
指令之后的两条指令的地址,而在Thumb指令集下,PC则是指向当前指令的下一条指令的地址。