什么是物理寄存器 "寄存器R8-R12有2组不同的物理寄存器"是什么意思?寄存...

\u4ec0\u4e48\u662f\u7269\u7406\u5bc4\u5b58\u5668

\u6570\u636e\u5bc4\u5b58\u5668\u4e3a\u56fe\u4e2d\u6700\u4e0a\u8fb9\u6240\u793a\u76844\u4e2a\u5bc4\u5b58\u5668AX,BX,CX,DX\u3002\u8fd9\u4e9b\u5bc4\u5b58\u5668\u7528\u4ee5\u6682\u65f6\u4fdd\u5b58\u8ba1\u7b97\u8fc7\u7a0b\u4e2d\u6240\u5f97\u5230\u7684\u64cd\u4f5c\u6570\u53ca\u7ed3\u679c\u3002\u4ed6\u80fd\u5904\u740616\u4f4d\u6570\uff0c\u4e5f\u80fd\u5904\u74068\u4f4d\u6570\uff0c\u5f53\u5904\u74068\u4f4d\u6570\u65f6\uff0c\u8fd94\u4e2a16\u4f4d\u5bc4\u5b58\u5668\u4f5c\u4e3a8\u4e2a8\u4e3a\u5bc4\u5b58\u5668AH,AL,BH,BL,CH,CL,DH,DL\u6765\u4f7f\u7528\u3002
\u8fd94\u4e2a\u6570\u636e\u5bc4\u5b58\u5668\u9664\u4e86\u4f5c\u4e3a\u901a\u7528\u5bc4\u5b58\u5668\u4ee5\u5916\uff0c\u8fd8\u6709\u5404\u81ea\u7684\u4e13\u95e8\u7528\u9014\uff1a
AX(accumulator)\u505a\u7d2f\u52a0\u5668\u7528\uff0c\u662f\u7b97\u672f\u8fd0\u7b97\u7684\u4e3b\u8981\u5bc4\u5b58\u5668\u3002AX\u8fd8\u7528\u5728\u5b57\u4e58\u548c\u5b57\u9664\u6cd5\u4e2d\uff0c\u6b64\u5916\uff0c\u6240\u6709\u7684I/O\u6307\u4ee4\u90fd\u662f\u4ee5AX\u4e3a\u4e2d\u5fc3\u4e0e\u5916\u90e8\u8bbe\u5907\u8fdb\u884c\u4fe1\u606f\u4f20\u9001\uff1b
BX(base)\u5728\u8ba1\u7b97\u5bc4\u5b58\u5668\u5730\u5740\u65f6\uff0c\u5e38\u7528\u505a\u57fa\u503c\u5bc4\u5b58\u5668\uff1b
CX(count)\u518d\u4e32\u64cd\u4f5c\u6307\u4ee4\u53ca\u5faa\u73af\u4e2d\u7528\u505a\u8ba1\u6570\u5668\uff1b
DX(data)\u5728\u5b57\u4e58\u6cd5\uff0c\u5b57\u9664\u6cd5\u8fd0\u7b97\u4e2d\uff0c\u5c06DX,AX\u7ec4\u5408\u6210\u4e00\u4e2a\u53cc\u5b57\u957f\u6570\uff0cDX\u7528\u6765\u5b58\u653e\u9ad816\u4f4d\u6570\u3002\u53e6\u5916\uff0c\u5728\u95f4\u63a5\u7684I/O\u6307\u4ee4\u4e2d\uff0cDX\u7528\u6765\u6307\u5b9aI/O\u7aef\u53e3\u5730\u5740

\u5c31\u662f\u8bf4\u52a9\u8bb0\u7b26R8-R12\u8868\u793a\u7684\u5bc4\u5b58\u5668\u6709\u4e24\u7ec4\uff0c\u5b9e\u9645\u5c31\u662f10\u4e2a\u5bc4\u5b58\u5668\u3002
\u53ef\u4ee5\u8fd9\u6837\u7406\u89e3\uff0c\u4e00\u517110\u4e2a\u5bc4\u5b58\u56681\u523010\uff0c\u7b2c\u4e00\u7ec4\u4e3a1-5\uff0c\u7b2c\u4e8c\u7ec4\u4e3a6-10\uff0c\u5982\u679c\u4f60\u9009\u62e9\u7b2c\u4e00\u7ec4\uff0c\u5219\u5bf9R8\u7684\u64cd\u4f5c\u5c31\u662f\u5bf9\u7269\u7406\u5bc4\u5b58\u56681\u7684\u64cd\u4f5c\uff1b\u5982\u679c\u9009\u4e2d\u7b2c\u4e8c\u7ec4\uff0c\u5219\u5bf9R8\u7684\u64cd\u4f5c\u5c31\u662f\u5bf9\u7269\u7406\u5bc4\u5b58\u56686\u7684\u64cd\u4f5c\u3002
\u7269\u7406\u5bc4\u5b58\u5668\u662f\u5728\u82af\u7247\u4e2d\u5b9e\u9645\u5b58\u5728\u7684\u4e00\u4e2a\u5b58\u50a8\u5668\uff0c\u7531\u7535\u8def\u7ec4\u6210\uff1b\u4f60\u8fd9\u513f\u8bf4\u7684\u5bc4\u5b58\u5668\u6307\u7684\u662f\u6307\u4ee4\u4e2d\u4f7f\u7528\u7684\u52a9\u8bb0\u7b26\uff0c\u6bcf\u4e2a\u7b26\u53f7\u8868\u793a\u4e00\u4e2a\u5bc4\u5b58\u5668\u3002
\u5b9e\u9645\u4f7f\u7528\u65f6\u8981\u6ce8\u610f\u7ec4\u7684\u8bbe\u7f6e\uff0c\u5426\u5219\u53ef\u80fd\u53d6\u5230\u4e0d\u60f3\u8981\u7684\u6570\u6216\u6539\u4e86\u4e0d\u5e94\u6539\u7684\u6570\u3002
\u572851\u7cfb\u5217\u5355\u7247\u673a\u4e2d\uff0c\u5bc4\u5b58\u5668R0-R7\u6709\u56db\u7ec4\uff0c\u8fd9\u6837\u8bbe\u8ba1\u7684\u597d\u5904\u662f\u6307\u4ee4\u7801\u53ef\u4ee5\u77ed\u4e00\u4e9b\uff0c\u56e0\u4e3aR0-R7\u8fd98\u4e2a\u5bc4\u5b58\u5668\uff0c\u75283\u4e2abit\u5c31\u53ef\u4ee5\u533a\u5206\u5f00\uff0c\u800c\u5982\u679c\u4f7f\u752832\u4e2a\u5bc4\u5b58\u5668\uff0c\u5219\u9700\u89815bit\u624d\u884c\u3002

物理寄存器包含ARM寄存器
ARM共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器.这些寄存器不能被同时访问,但在任何时候,通用寄存器R0~R14,程序计数器PC,一个或两个状态寄存器都是可访问的.
通用寄存器
通用寄存器包括R0~R15,可以分为3类:
(1)未分组寄存器R0~R7
(2)分组寄存器R8~R14
(3)程序计数器PC(R15)
ARM寄存器介绍

1.未分组寄存器R0~R7
在所有运行模式下,未分组寄存器都指向同一个物理寄存器,它们未被系统用作特殊的用途.因此在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,所以可能造成寄存器中数据的破坏.
2.分组寄存器R8~R14
对于分组寄存器,它们每一次所访问的物理寄存器都与当前处理器的运行模式有关.对于R8~R12来说,每个寄存器对应2个不同的物理寄存器,当使用FIQ(快速中断模式)时,访问寄存器R8_fiq~R12_fiq;当使用除FIQ模式以外的其他模式时,访问寄存器R8_usr~R12_usr.
对于R13,R14来说,每个寄存器对应6个不同的物理寄存器,其中一个是用户模式与系统模式共用,另外5个物理寄存器对应其他5种不同的运行模式,并采用以下记号来区分不同的物理寄存器:
R13_
R14_
其中mode可为:usr,fiq,irq,svc,abt,und.
寄存器R13在ARM指令中常用作堆栈指针,用户也可使用其他的寄存器作为堆栈指针,而在Thumb指令集中,某些指令强制性的要求使用R13作为堆栈指针.
寄存器R13在ARM指令中常用作堆栈指针,但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。而在Thumb指令集中,某些指令强制性的要求使用R13作为堆栈指针。
由于处理器的每种运行模式均有自己独立的物理寄存器R13,在用户应用程序的初始化部分,一般都要初始化每种模式下的R13,使其指向该运行模式的栈空间。这
样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入R13所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复,采用这种方式可以保证异常发生后程序的正常执行。
R14称为链接寄存器(Link Register),当执行子程序调用指令(BL)时,R14可得到R15(程序计数器PC)的备份.
在每一种运行模式下,都可用R14保存子程序的返回地址,当用BL或BLX指令调用子程序时,将PC的当前值复制给R14,执行完子程序后,又将R14的值复制回PC,即可完成子程序的调用返回。以上的描述可用指令完成。
执行以下任意一条指令:
MOV PC, LR
BX LR
在子程序入口处使用以下指令将R14存入堆栈:
STMFD SP!,{,LR}
对应的,使用以下指令可以完成子程序返回:
LDMFD SP!,{,PC}
R14也可作为通用寄存器。
3,程序计数器PC(R15)
寄存器R15用作程序计数器(PC),在ARM状态下,位[1:0]为0,位[31:2]用于保存PC,在Thumb状态下,位[0]为0,位[31:1]用于保存PC.
由于ARM体系结构采用了多级流水线技术,对于ARM指令集而言,PC总是指向当前指令的下两条指令的地址,即PC的值为当前指令的地址值加8个字节
程序状态寄存器
4,寄存器R16
寄存器R16用作CPSR(Current
Program Status Register,当前程序状态寄存器),CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。
每一种运行模式下又都有一个专用的物理状态寄存器,称为SPSR(Saved Program Status Register,备份的程序状态寄存器),当异常发生时,SPSR用于保存CPSR的当前值,从异常退出时则可由SPSR来恢复CPSR。



数据寄存器为图中最上边所示的4个寄存器AX,BX,CX,DX。这些寄存器用以暂时保存计算过程中所得到的操作数及结果。他能处理16位数,也能处理8位数,当处理8位数时,这4个16位寄存器作为8个8为寄存器AH,AL,BH,BL,CH,CL,DH,DL来使用。
这4个数据寄存器除了作为通用寄存器以外,还有各自的专门用途:
AX(accumulator)做累加器用,是算术运算的主要寄存器。AX还用在字乘和字除法中,此外,所有的I/O指令都是以AX为中心与外部设备进行信息传送;
BX(base)在计算寄存器地址时,常用做基值寄存器;
CX(count)再串操作指令及循环中用做计数器;
DX(data)在字乘法,字除法运算中,将DX,AX组合成一个双字长数,DX用来存放高16位数。另外,在间接的I/O指令中,DX用来指定I/O端口地址

  • 浠涔堟槸鐗╃悊瀵勫瓨鍣
    绛旓細鐗╃悊瀵勫瓨鍣ㄦ槸涓ぎ澶勭悊鍣ㄥ唴鐨勭粍鎴愰儴鍒銆瀵勫瓨鍣ㄦ槸鏈夐檺瀛樿串瀹归噺鐨勯珮閫熷瓨璐儴浠锛屽畠浠彲鐢ㄦ潵鏆傚瓨鎸囦护銆佹暟鎹拰鍦板潃銆傚湪涓ぎ澶勭悊鍣ㄧ殑鎺у埗閮ㄤ欢涓紝鍖呭惈鐨勫瘎瀛樺櫒鏈夋寚浠ゅ瘎瀛樺櫒鍜岀▼搴忚鏁板櫒銆傚湪涓ぎ澶勭悊鍣ㄧ殑绠楁湳鍙婇昏緫閮ㄤ欢涓紝瀛樺櫒鏈夌疮鍔犲櫒銆瀵勫瓨鍣ㄦ槸闆嗘垚鐢佃矾涓潪甯搁噸瑕佺殑涓绉嶅瓨鍌ㄥ崟鍏锛岄氬父鐢辫Е鍙戝櫒缁勬垚銆傚湪闆嗘垚鐢佃矾璁捐...
  • 浠涔堟槸鐗╃悊瀵勫瓨鍣
    绛旓細鍦ㄦ墍鏈夎繍琛屾ā寮忎笅,鏈垎缁勫瘎瀛樺櫒閮芥寚鍚戝悓涓涓鐗╃悊瀵勫瓨鍣,瀹冧滑鏈绯荤粺鐢ㄤ綔鐗规畩鐨勭敤閫.鍥犳鍦ㄤ腑鏂垨寮傚父澶勭悊杩涜杩愯妯″紡杞崲鏃,鐢变簬涓嶅悓鐨勫鐞嗗櫒杩愯妯″紡鍧囦娇鐢ㄧ浉鍚岀殑鐗╃悊瀵勫瓨鍣,鎵浠ュ彲鑳介犳垚瀵勫瓨鍣ㄤ腑鏁版嵁鐨勭牬鍧.2.鍒嗙粍瀵勫瓨鍣≧8~R14 瀵逛簬鍒嗙粍瀵勫瓨鍣,瀹冧滑姣忎竴娆℃墍璁块棶鐨勭墿鐞嗗瘎瀛樺櫒閮戒笌褰撳墠澶勭悊鍣ㄧ殑杩愯妯″紡鏈夊叧....
  • "瀵勫瓨鍣≧8-R12鏈2缁勪笉鍚岀殑鐗╃悊瀵勫瓨鍣"鏄浠涔鎰忔?瀵勫瓨鍣ㄥ拰鐗╃悊瀵勫瓨鍣...
    绛旓細鐗╃悊瀵勫瓨鍣ㄦ槸鍦ㄨ姱鐗囦腑瀹為檯瀛樺湪鐨勪竴涓瓨鍌ㄥ櫒锛岀敱鐢佃矾缁勬垚锛涗綘杩欏効璇寸殑瀵勫瓨鍣ㄦ寚鐨勬槸鎸囦护涓娇鐢ㄧ殑鍔╄绗︼紝姣忎釜绗﹀彿琛ㄧず涓涓瘎瀛樺櫒銆傚疄闄呬娇鐢ㄦ椂瑕佹敞鎰忕粍鐨勮缃紝鍚﹀垯鍙兘鍙栧埌涓嶆兂瑕佺殑鏁版垨鏀逛簡涓嶅簲鏀圭殑鏁般傚湪51绯诲垪鍗曠墖鏈轰腑锛屽瘎瀛樺櫒R0-R7鏈夊洓缁勶紝杩欐牱璁捐鐨勫ソ澶勬槸鎸囦护鐮佸彲浠ョ煭涓浜涳紝鍥犱负R0-R7杩8涓瘎瀛樺櫒锛...
  • 瀵勫瓨鍣鐨勬剰鎬濆瘎瀛樺櫒鐨勬剰鎬濇槸浠涔
    绛旓細瀵勫瓨鍣ㄧ殑璇嶈瑙i噴鏄細瀵勫瓨鍣╦矛c煤nq矛銆(1)璁$畻鏈烘垨璁$畻鍣ㄥ唴瀛樺偍灏忛噺鏁版嵁鐨勮缃;灏ゆ寚鏁版嵁鍙互鍚屾椂瀛樺偍鍜岃繍绠楃殑瑁呯疆銆傚瘎瀛樺櫒鐨勮瘝璇В閲婃槸锛氬瘎瀛樺櫒j矛c煤nq矛銆(1)璁$畻鏈烘垨璁$畻鍣ㄥ唴瀛樺偍灏忛噺鏁版嵁鐨勮缃;灏ゆ寚鏁版嵁鍙互鍚屾椂瀛樺偍鍜岃繍绠楃殑瑁呯疆銆傛嫾闊虫槸锛歫矛c煤nq矛銆傜粨鏋勬槸锛氬瘎(涓婁笅缁撴瀯)瀛(鍗婂寘鍥寸粨鏋)鍣(涓婁腑涓...
  • 瀵勫瓨鍣鍏蜂綋鏄釜浠涔?浠栫殑鐗╃悊鍦板潃鎬庝箞鐪
    绛旓細瀵勫瓨鍣ㄦ槸CPU鍐呴儴鐨勫瓨鍌ㄥ櫒锛屼笉澶氾紝鍙槸涓轰簡鍑忓皯鏁版嵁涓庡唴瀛樼殑浜ゆ崲娆℃暟鑰岃缃紝姣忎釜瀵勫瓨鍣ㄩ兘鏈変笓鐢ㄧ殑鍚嶇О锛屾墍浠ヨ闂瘎瀛樺櫒鍙渶瑕佸啓鍑哄瘎瀛樺櫒鐨勫悕绉板嵆鍙傜墿鐞嗗湴鍧鏄瓨鍌ㄥ櫒鐨勫湴鍧锛屽湪鐗╃悊浣嶇疆涓婄湅锛屽瘎瀛樺櫒鍦–PU鍐呴儴锛屽瓨鍌ㄥ櫒鍦–PU澶栭儴
  • 瀵勫瓨鍣鍜屽瓨鍌ㄥ櫒鐨勫尯鍒槸浠涔
    绛旓細涓鑸瀵勫瓨鍣鏄寚鐢卞熀鏈殑RS瑙﹀彂鍣ㄧ粨鏋勮鐢熷嚭鏉ョ殑D瑙﹀彂锛屽氨鏄竴浜涗笌闈為棬鏋勬垚鐨勭粨鏋勶紝杩欎釜鍦ㄦ暟鐢甸噷闈㈠ぇ瀹堕兘鐪嬭繃锛涜孯AM鍒欐湁鑷繁鐨勫伐鑹猴紝涓鑸1Bit鐢卞叚MOS绠℃瀯鎴愩傛墍浠ワ紝杩欎袱鑰呯殑鐗╃悊缁撴瀯涓嶄竴鏍蜂篃瀵艰嚧浜嗕袱鑰呯殑鎬ц兘涓嶅悓銆傚瘎瀛樺櫒 璁块棶閫熷害蹇紝浣嗘槸鎵鍗犻潰绉ぇ銆傝孯AM鐩稿弽锛屾墍鍗犻潰绉皬锛屽姛鐜囦綆锛屽彲浠ュ仛鎴愬ぇ瀹归噺...
  • 閫氱敤瀵勫瓨鍣缂╁啓
    绛旓細瀵勫瓨鍣ㄥ爢鐨勬瘡涓潯鐩紙entry锛屽嵆涓涓鐗╃悊瀵勫瓨鍣锛夊姣忎釜绔彛锛坧ort锛夐兘鏈変竴鏉″瓧绾匡紙word line锛夛紝姣忎釜浣嶅厓鐨勫熀鏈瓨鍌ㄥ崟鍏冿紝瀵规瘡涓绔彛鏈1鏉′綅绾匡紝瀵规瘡涓啓绔彛鏈2鏉′綅绾裤傛瘡涓綅鍏冪殑鍩烘湰瀛樺偍鍗曞厓閮借繛鎺ュ埌浜嗕緵鐢电殑Vdd锛堥珮鐢靛钩锛変笌Vss锛堜綆鐢靛钩鎴栬呮帴鍦帮級锛岃繖閲岀殑d鏄寚缁勬垚SRAM鐨勫満鏁堝簲绠$殑婕忔瀬锛坉rain...
  • 瀵勫瓨鍣ㄦ槸浠涔
    绛旓細瀵勫瓨鍣ㄦ槸涓ぎ澶勭悊鍣ㄥ唴鐨勭粍鎴愰儴鍒嗐瀵勫瓨鍣ㄦ槸鏈夐檺瀛樿串瀹归噺鐨勯珮閫熷瓨璐儴浠锛屽畠浠彲鐢ㄦ潵鏆傚瓨鎸囦护銆佹暟鎹拰鍦板潃銆傚瘎瀛樺櫒鏄墿鐞嗙粨鏋勶紝鏀跺埌澶栫晫鍐插嚮鏃惰偗瀹氫細鍧忋傛弧鎰忚閲囩撼
  • 瀵勫瓨鍣 鍜屽唴瀛浠涔鍏崇郴
    绛旓細瀵勫瓨鍣ㄦ槸CPU閲岀殑涓滆タ锛屽唴瀛樻槸鎸傚湪CPU澶栭潰鐨勬暟鎹荤嚎涓娿傚瘎瀛樺櫒鏄腑澶鐞嗗櫒鍐呯殑缁勬垚閮ㄤ唤銆瀵勫瓨鍣ㄦ槸鏈夐檺瀛樿串瀹归噺鐨勯珮閫熷瓨璐儴浠锛屽畠浠彲鐢ㄦ潵鏆傚瓨鎸囦护銆佹暟鎹拰浣嶅潃銆傚唴瀛樻槸璁$畻鏈轰腑閲嶈鐨勯儴浠朵箣涓锛屽畠鏄笌CPU杩涜娌熼氱殑妗ユ銆傝绠楁満涓墍鏈夌▼搴忕殑杩愯閮芥槸鍦ㄥ唴瀛樹腑杩涜鐨勩傝闂唴瀛樻椂瑕佸湪CPU鐨勫瘎瀛樺櫒濉笂鍦板潃锛屽啀...
  • 璁$畻鏈虹殑椤靛彿銆鐗╃悊鍦板潃銆侀昏緫鍦板潃鍚勫崰澶氬皯浣?
    绛旓細鍥犱负閫昏緫椤甸潰16涓紝鑰2^4绛変簬16锛屾墍浠ラ昏緫椤靛彿鍗犵敤4浣嶃鐗╃悊椤靛彿鍗6浣嶏紝鍥犱负鐗╃悊鍧楁湁64涓紝鍥犱负2^6=64锛屾墍浠ヨ鐗╃悊椤靛彿鍗犵敤6浣嶃傞昏緫鍦板潃锛氬垎椤甸昏緫鍦板潃 =P(椤靛彿).d(椤靛唴浣嶇Щ)銆傚垎椤电墿鐞嗗湴鍧=f(椤靛抚鍙).d(鍚屼笂)銆侾 = 绾挎ч昏緫鍦板潃/椤甸潰澶у皬銆乨= 绾挎ч昏緫鍦板潃-P*椤甸潰澶у皬銆
  • 扩展阅读:寄存器地址对照表 ... 立即寻址寄存器寻址 ... modbus读取400001地址 ... 寄存器的三种类型 ... 三菱特殊寄存器一览表 ... 寄存器寻址的四种方式 ... modbus地址对照表 ... 寄存器图片 ... 五种常用的寄存器 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网