剛開始接觸u-boot中的start.s檔案時,對匯程式設計序中的.word很是不解,於是上網上查詢資料,整理如下,在此感謝論壇中無私解答的高手們
start.s匯程式設計序中有這麼一句:
ldr pc, _undefined_instruction
_undefined_instruction: .word undefined_instruction
.word的用法格式
syntax: .word expressions
在當前位置放乙個word型的值,這個值就是expression
在論壇中wheelz的舉例解答:
ldr r1, _rwtcon
_rwtcon:
.word 0x15300000
是把位址_rwtcon上的內容放到r1,而位址_rwtcon上的內容是0x15300000。實際上就是把r1設定為0x15300000
.word和0x1530 0000有什麼關係?.word就是把expression上的值取出來? expression代表位址?
.word expression就是在當前位置放乙個word型的值,這個值就是expression
舉例來說,
_rwtcon:
.word 0x15300000
就是在當前位址,即_rwtcon處放乙個值0x15300000
翻譯成intel的彙編語句就是:
_rwtcon dw 0x15300000
原匯程式設計序:(start.s)
.globl _start
_start: b reset
ldr pc, _undefined_instruction
ldr pc, _software_interrupt
ldr pc, _prefetch_abort
ldr pc, _data_abort
ldr pc, _not_used
ldr pc, _irq
ldr pc, _fiq
_undefined_instruction: .word undefined_instruction
_software_interrupt: .word software_interrupt
_prefetch_abort: .word prefetch_abort
_data_abort: .word data_abort
_not_used: .word not_used
_irq: .word irq
_fiq: .word fiq
00000000 [0xea000012] b 0x50
00000004 [0xe59ff014] ldr pc,0x00000020 ; = #0x33f80140
00000008 [0xe59ff014] ldr pc,0x00000024 ; = #0x33f801a0
0000000c [0xe59ff014] ldr pc,0x00000028 ; = #0x33f80200
00000010 [0xe59ff014] ldr pc,0x0000002c ; = #0x33f80260
00000014 [0xe59ff014] ldr pc,0x00000030 ; = #0x33f802c0
00000018 [0xe59ff014] ldr pc,0x00000034 ; = #0x33f80320
0000001c [0xe59ff014] ldr pc,0x00000038 ; = #0x33f80380
00000020 [0x33f80140] mvnccs r0,#0x10 ; ? rn = 0x8
00000024 [0x33f801a0] mvnccs r0,#0x28 ; ? rn = 0x8
00000028 [0x33f80200] mvnccs r0,#0, 4 ; ? rn = 0x8
0000002c [0x33f80260] mvnccs r0,#6 ; ? rn = 0x8
00000030 [0x33f802c0] mvnccs r0,#0xc ; ? rn = 0x8
00000034 [0x33f80320] mvnccs r0,#0x80000000 ; ? rn = 0x8
00000038 [0x33f80380] mvnccs r0,#2 ; ? rn = 0x8
0000003c [0xdeadbeef] cdple p14,0xa,c11,c13,c15,7
00000040 [0x33f80000] mvnccs r0,#0 ; ? rn = 0x8
00000044 [0x33f80000] mvnccs r0,#0 ; ? rn = 0x8
00000048 [0x33f96650] mvnccs r6,#0x5000000 ; ? rn = 0x9
0000004c [0x33f9ab80] mvnccs r10,#0x20000 ; ? rn = 0x9
00000050 [0xe10f0000] mrs r0,cpsr
00000054 [0xe3c0001f] bic r0,r0,#0x1f
00000058 [0xe38000d3] orr r0,r0,#0xd3
0000005c [0xe129f000] msr cpsr_cf,r0
由此可以看出,_undefined_instruction標號代表的位址時0x00000020
在位址0x00000020處分配乙個字記憶體空間,存放undefined_instruction這個標號的位址,當出現未定義指令異常時,將undefined_instruction位址賦給pc暫存器。
Word中的字型大小
word對字型大小採用兩種不同的度量單位,其中一種是以 號 為度量單位,如常用的 初號 小初 一號 小一 七号 八號 等 另一種是以國際上通用的 磅 28.35磅等於1厘公尺 為度量單位。號 磅 與 公釐 之間的對應關係見附表。字型大小初號 小初一號 小一二號 小二三號小三磅 公釐14.8 12.7...
php中this的含義
下面定義了乙個cart類 class cart 把 num 個 artnr 從車中取出 function remove item artnr,num else 以一段 說明問題,在乙個類的定義內部,你無法得知使用何種名稱的物件是可以訪問的 在編寫 cart 類時,並不知道之後物件的名稱將會命名為 c...
php中this的含義
下面定義了乙個cart類 class cart 把 num 個 artnr 從車中取出 function remove item artnr,num else 以一段 說明問題,在乙個類的定義內部,你無法得知使用何種名稱的物件是可以訪問的 在編寫 cart 類時,並不知道之後物件的名稱將會命名為 c...