这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » vectors 关于vectors.s文件中的异常向量表的两点疑问

共2条 1/1 1 跳转至

vectors 关于vectors.s文件中的异常向量表的两点疑问

院士
2006-09-17 18:14:16     打赏
vectors 关于vectors.s文件中的异常向量表的两点疑问



关键词: vectors     关于     vectors.s     文件         

院士
2006-12-22 22:43:00     打赏
2楼
问 在启动代码的vectors.s文件中有下面的代码:

Vectors
        LDR     PC, ResetAddr
        LDR     PC, UndefinedAddr
        LDR     PC, SWI_Addr
        LDR     PC, PrefetchAddr
        LDR     PC, DataAbortAddr
        DCD     0xb9205f80
        LDR     PC, [PC, #-0xff0]
        LDR     PC, FIQ_Addr

ResetAddr           DCD     Reset
UndefinedAddr       DCD     Undefined
SWI_Addr            DCD     SoftwareInterrupt
PrefetchAddr        DCD     PrefetchAbort
DataAbortAddr       DCD     DataAbort
Nouse               DCD     0
IRQ_Addr            DCD     0
FIQ_Addr            DCD     FIQ_Handler

问题一是:                LDR     PC, ResetAddr
           ResetAddr      DCD   Reset
  这两句代码能否用一句来代替:LDR  PC, =Reset (LDR伪指令加载一个地址值到pc寄存器中),能行的话岂不是更简洁?
问题二是:
  红皮书382页说:之所以用LDR指令而不用B指令的一个原因是因为芯片具有remap的功能,当向量表位于ram中时,用B指令不能跳到正确的地址,这句话应该怎么理解?如果不用芯片的ramap功能的话,直接用   B    Reset 这条指令就可以替代下面的两条指令?
           LDR     PC, ResetAddr  
ResetAddr   DCD     Reset      1: 不能改,主要是这几个向量的校验和为零的问题。用 b  xxx 也可以,只是有个跳转范围的问题。 2: 不错,这个论坛设置的非常好,

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]