问题一: [ {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,谢谢啊. |