I,m using keil uVison4.22 and the device is arm7 ,I am testing about SubroutineCall,but found a doubt that the code store the r15(PC) to the address r13 of memory,and the value is PC + 12 ,if i use mov instructions to anyOne register is PC + 8 correct . but why?
AREA SubroutineCall,CODE,READWRITE ENTRY ADR r13,Stack SUB r13,r13,#4 STR r15,[r13] B Target MOV r0,#0xFF MOV r0,#0x18 LDR r1,=0x20026 SVC #123456 Target MOV r1,#0xAA LDR r12,[r13],#+4 SUB r12,r12,#4 MOV r15,r12 AREA SubroutineCall,DATA,READWRITE SPACE 64 Stack DCD 0x00000000 END
so, what is the different store PC into between memory and register? because of the pipeline?
你需要看看armv4 的构架文档,里面说