彙編中 word的具體用途是什麼?

2021-08-15 09:46:02 字數 2057 閱讀 2482

_undefined_instruction: .word undefined_instruction

_undefined_instruction是乙個標號,處理到這裡時,asm會把undefined_instruction的值按16bit的形式放在此標號處。 

ldr pc, _undefined_instruction 

就是從_undefined_instruction處取值,即undefined_instruction, 並設定到pc中。

.word就是在這個地方放乙個值。相當於在這裡定義乙個資料變數。用.word定義了乙個16bit的資料。

並將underfined_instruction的值本身放在這裡,因此,pc=undefined_instruction,實現跳轉。 

ldr 是把資料從儲存器傳輸到暫存器上,格式如下: 

ldr(條件) 目的暫存器,《儲存器位址》

**:ldr r1, _rwtcon 

_rwtcon: 

.word 0x15300000 

這兩個語句是不是說把位址0x1530 0000 上的內容傳遞到r1? 而不是把0x1530 0000 放到r1 ? 

不是把位址0x1530 0000 上的內容傳遞到r1,是把位址_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沒有.long/.word 

匯程式設計序就不知道你想在這裡放乙個多大的資料, 

相當於資料型別。

另外還應注意:在arm7,9中(其他的我不清楚)arm指令集中乙個字型別就是32位。

附:感覺一定要理解一些基本的概念,然後在看懂彙編的基礎上,再分析uboot的流程。

gnu as語法即at&t彙編語法,uboot用到的語法。

as**  

.globl _start  

_start: b       reset  

標籤就是在某行程式**前作乙個標記,標籤代表的是這行**的位址。

as**  

.globl _armboot_start  

_armboot_start:  

.word _start  

.word expression就是在當前位置放乙個word型的值,這個值就是expression ,此處的含義就是建立乙個全域性標籤_armboot_start,在這個位置上放置_start的值(可以這樣理解,_armboot_start是乙個位址,這個位址中的內容是_start),則下面的語句會把位址_armboot_start處的內容(_start)裝載到r2中。

as**  

ldr r2, _armboot_start  

這樣做的目的是因為ldr指令的格式為:ldr    rd, 《位址》。

含義:保留乙個字,初始化一下。實際的值應該在執行時計算出來。(badcode嗎,呵呵)。

如果是debug下,uboot直接執行在ram中,從而得到的_start值和text_base是相等的,不需要拷貝。如果從flash啟動,_start為0x0,text_base是sdram的位址,二者是不相等的,需要拷貝。(tq2440的sdram為64m,bank6,位址空間為0x30000000-0x34000000,text_base設定為0x33d000000,即0x33d00000-0x34000000為uboot使用的空間+bss和其他的空間)。

見對映圖

遵循atpcs(arm-thumb procedure call standard)標準。

vue 中slot 的具體用法

子元件 父元件 跳轉到詳情 父元件 這種情況是如果要父元件在子元件中插入內容 必須要在子元件中宣告slot標籤 如果子元件模板不包含插口,父元件的內容 將會被丟棄。當slot存在預設值預設值 且父元素在中沒有要插入的內容時,會顯示預設值 p標籤會去掉 當slot存在預設值,且父元素在中存在要插入的內...

PHP中try catch 的具體用法詳解

在php語言中有許多語法需要我們去不斷的熟悉,然後才能靈活的運用,編寫我們需要的 程式。在這篇文章中我們將為大家介紹php中try catch 的用法。try catch exception e php中try catch 是異常處理.將要執行的 放入try塊中,如果這些 執行過程中某一條語句發生異...

PHP中try catch 的具體用法詳解

php中try catch 的作用是用來處理異常。可以為我們收集並顯示出錯誤資訊。希望通過這篇文章的介紹,大家能掌握這一語句的應用。在php語言中有許多語法需要我們去不斷的熟悉,然後才能靈活的運用,編寫我們需要的 程式。在這篇文章中我們將為大家介紹php中try catch 的用法。try catc...