首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

关于ARM汇编语法格式的问题,我是新手.

关于ARM汇编语法格式的问题,我是新手.

问题一:
  
                  [ {FALSE}
         b  %B1  ;handler for Undefined mode
 b  %B1  ;handler for SWI interrupt
 b  %B1  ;handler for PAbort
 b  %B1  ;handler for DAbort
 b  %B1  ;reserved
 b  %B1    ;handler for IRQ interrupt
                          ]
请问这是[ {FALSE} ]什么意思啊,在中括号里面加代码代表什么?
       
问题二:
         SMRDATA DATA
        DCD (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
     DCD ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC)) 
     DCD ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC)) 
     DCD ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC)) 
     DCD ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC)) 
     DCD ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC)) 
     DCD ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC)) 
     DCD ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))        
     DCD ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))        
     DCD ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)   
     DCD 0xB2            ;SCLK power saving mode, BANKSIZE 128M/128M
     DCD 0x30            ;MRSR6 CL=3clk
     DCD 0x30


大家见到过这样的定义吗?我查过ARM汇编指令集了,也找到了有关DCD指令的说明,但是说的不详细啊,这是这个指令的语法格式:


{label} DCD expr{,expr}{,expr}{,expr}.....
                 label  : 表示内存块起始地址标号
                 expr   : 常数表达式,或程序中的标号内存分配字节数由expr个数
                          决定
SMRDATA DATA 这两个哪个是内存起始地址标号,是SMRDATA,还是DATA?
上面这么多的DCD指令,前面的{label} 都省略了吗?



问题三:
        add  r0, pc, #SMRDATA - (. + 8)
 ldr             r1, = BWSCON ; BWSCON Address
 add  r2, r0, #52 ; End address of SMRDATA
这个.(点)代表什么啊,PC的值或地址是多少.
如何才能计算出.(点)与PC的值.
能求出r0的具体值或地址吗?


哪位仁兄,有关于ARM汇编语言,详细解释的文档资料,或者关于ARM指令详细解释的资料也行.
请发到我的邮箱arm__007@sina.com,谢谢啊.

1.{false} 就是BOOL量的假,在ARM中要加{}来表示.后面是一此中断跳转的指令.
2.SMRDATA是内存起始地址的标号.DATA是一个directive. 指示SMRDATA后面所存是一些数据值. 如果前面没有声明,那后后续的DCD的值是在内存中依次排放的.
3.这个问题我以前没有遇到过,再查查吧,呵呵.
51 c8051f(f020,f040) msp430 arm(2410,2510) fpga(xc3s4000) dsp(5116 dm642) keilc vc++ matlab linux protel Ten_layerPCB mpegx h.26x Rscode Turbocode ofdm VideoBroadcasting ldpc_code(now!)
非常感谢啊.

我是个新手,刚刚学ARM汇编.

呵呵,有问题就尽管问,能帮上的会尽量帮的,大家共同学习嘛...
51 c8051f(f020,f040) msp430 arm(2410,2510) fpga(xc3s4000) dsp(5116 dm642) keilc vc++ matlab linux protel Ten_layerPCB mpegx h.26x Rscode Turbocode ofdm VideoBroadcasting ldpc_code(now!)
返回列表