start S中 word的含義

2021-05-24 14:08:43 字數 2934 閱讀 9195

剛開始接觸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...