打印

PC寄存器地址的问题

[复制链接]
1614|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
taowenyin|  楼主 | 2009-1-4 18:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.  ; 文件名:TEST4.S
2.  ; 功能:通过查表实现程序散转
3.  ; 说明:使用ARMulate软件仿真调试
4.  NumCon   EQU    0x40003001    ; 定义变量NumCn           
5.        AREA      Example4,CODE,READONLY                 
6.        ENTRY                             
7.  MAIN        LDR      R0,= NumCon         
8.        LDRB      R2,[R0]        ; 取得跳转控制变量值                  
9.        MOV      R2,R2,LSL #2 ; 功能号乘上4,以便查表             
10.        LDR      PC,[PC,R2]   ; 查表取得对应功能子程序地址,并跳转
11.        NOP         
12. FUN_TAB  DCD      FUN_SUB0     ; 跳转表            
13.        DCD      FUN_SUB1            
14.        DCD      FUN_SUB2            
15.        DCD      FUN_SUB3            
16.; 各功能分支
17. FUN_SUB0  B       MAIN       
18. FUN_SUB1  B       MAIN       
19. FUN_SUB2  B      MAIN        
20. FUN_SUB3  B      MAIN        
    END
程序运行到第9行时,PC值是0x0000800c,此时的R2我设的是0x00000004,但当我再往下运行到第10行时,PC变为0x00008028,并且下条指令指向FUN_SUB1,这个PC的变化我不是很理解,请大大帮忙解释下,谢谢

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝