维库电子市场网
登录 免费注册 首页 | 行业黑名单 | 委托交易 | 帮助 | English
 
IC供应
IC求购
非IC供应
非IC求购
电子资讯
技术资料
商人论坛
 
技术文章 PDF资料 IC价格 引脚说明 电路图 IC替换 IC厂商 电子辞典
作者 主题 内容
采购元器件好去处--维库电子市场网推荐
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

ARM之PC问题

作者:zhh_026 栏目:ARM技术
ARM之PC问题
根据《ARM微控制器基础与实践》第2页对指令流水线的说明ARM指令集中:
当前"取指PC"=当前PC
当前"译码PC"=当前PC-4
当前"执行PC"=当前PC-8

很容易理解ARM指令集中:
例程(1)
    BL  delay    ;LR=当前PC-4(即当前指令"执行PC"+8-4)
    mov r0,#0    ;
delay   mov PC,LR    ;子函数返回;即返回到调用时"当前PC"-4位置(即当前指令("执行PC"+8)-4);即返回到函数调用指令的下一条指令(mov r0,#0;)处

例程(2)
    mov r0,#1    ;当EINT1在此处发生中断,LR=当前PC(即当前指令"执行PC"+8)
    mov r0,#0    ;
EINT1_Handler   
    subs PC,LR,#4    ;LR=LR-4中断返回;即返回到中断时"当前PC"-4位置(即当前指令("执行PC"+8)-4);即返回到子函数调用指令的下一条指令(mov r0,#0;)处

但如何理解P393页软中断的汇编接口:
例程(3)
    TST    R3,#T_bit        ;判断是ARM指令集还是Thumb指令集
    LDRNEH    R0,[LR,#-2]        ;是Thumb指令集,取SWI中断时执行的指令(即C语言__SWI(0x00)指令)
    BICNE    R0,R0,#0XFF00        ;取软中断功能号
    LDREQ    R0,[LR,#-4]        ;是ARM指令集,取SWI中断时执行的指令(即C语言__SWI(0x00)指令)
    BIC    R0,R0,#0XFF000000    ;取软中断功能号
问题1:LDREQ    R0,[LR,#-4];取的是执行C语言__SWI(0x00)指令时"当前PC-4";而它指向的应该是SWI中断返回的位置,而不是SWI指令本身?
问题2:BIC    R0,R0,#0XFF000000    ;取软中断功能号;该指令的执行一定和生成ARM代码规则相关,但书中并无相关介绍

参与讨论
昵称:
讨论内容:
 
 
相关帖子
串口中断+定时中断 出现丢数据
LPC2104的IO口速度好像不是很快哦
easyarm2200的rtl8019中断的问题???
请问一下LPC2104和LPC2106多少钱一片?
请教大家 ARM 串口中断输出问题
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号