1. 程式人生 > >嵌入式面試題——ARM面試題(二)

嵌入式面試題——ARM面試題(二)

填空題

1.ARM微處理器在較新的體系結構中支援兩種指令集:______、______。

答案:ARM指令集、Thumb指令集

2.ARM處理器有9種基本定址方式,分別是:______、______、______、______、______、______、

______、______、______。

答案:暫存器定址、立即定址、暫存器偏移定址、暫存器間接定址、基址定址、多暫存器定址、堆疊定址、塊拷貝定址、相對定址

3.ARM指令集可以分為6類,分別是:______、______、______、______、______、______。

答案:跳轉指令、資料處理指令、程式狀態暫存器(PSR)傳輸指令、Load/Store指令、協處理器指令、異常中斷產生指令

4.在ARM的彙編程式中,有如下幾種偽指令:_____、______、______、______、______。

答案:符號定義偽指令、資料定義偽指令、彙編控制偽指令、巨集指令、其他偽指令

5.組合語言與C/C++的混合程式設計通常有以下幾種方式:_____、______、______。

答案:C/C++程式碼中嵌入彙編指令;從彙編程式中訪問C程式變數;彙編程式、C/C++程式間的相互呼叫

6.ARM C/C++編譯器支援和產生以下幾種格式的檔案:_____、____、____、______、______。

答案:filename.c 原始檔、filename.h標頭檔案、filename.o目標檔案、filename.s彙編程式碼檔案、filename.lst列表檔案

問答題:

1.一條典型的ARM指令具有什麼樣的語法格式,並描述各選項意義。

答:一條典型的ARM指令語法格式如下所示:

<opcode>{<cond>}{S}<Rd>,<Rn>,< shifter_operand >

其中:

opcode是指令操作符編碼;

cond 是指令執行的條件編碼;

S決定指令的操作是否影響CPSR的值;

Rd是目標暫存器編碼;

Rn是包含第1個運算元的暫存器編碼;

shifter_operand 表示第2個運算元。

2.表示遞增和遞減的滿堆疊和空堆疊有哪幾種組合,請比較它們的特點。

答:有4種類型的堆疊,表示遞增和遞減的滿堆疊和空堆疊的各種組合。

滿遞增:堆疊通過增大儲存器的地址向上增長,堆疊指標指向內含有效資料項的最高地址。指令如LDMFA,STMFA等。

空遞增:堆疊通過增大儲存器的地址向上增長,堆疊指標指向堆疊上的第一個空地址。指令如LDMEA,STMEA等。

滿遞減:堆疊通過減小儲存器的地址向下增長,堆疊指標指向內含有效資料項的最低地址。指令如LDMFD,STMFD等。

空遞增:堆疊通過減小儲存器的地址向下增長,堆疊指標指向堆疊下的第一個空地址。指令如LDMED,STMED等。

3.ARM協處理器指令包括哪3類,請描述它們的功能。

答:ARM協處理器指令包括以下3類:

用於ARM處理器初始化ARM協處理器的資料處理操作。

用於ARM處理器的暫存器和ARM協處理器的暫存器間的資料傳送操作。

用於在ARM協處理器的暫存器和記憶體單元之間傳送資料。

4.常見的符號定義偽指令,具體有哪幾種?

答:常見的符號定義偽指令有如下幾種。

用於定義全域性變數的GBLA、GBLL和GBLS。

用於定義區域性變數的LCLA、LCLL和LCLS。

用於對變數賦值的SETA、SETL、SETS。

為通用暫存器列表定義名稱的RLIST。

5.組合語言程式中常用的符號,需要遵循哪些規則?

答:組合語言程式中常用的符號,必須遵循以下的約定。

符號區分大小寫,同名的大、小寫符號會被編譯器認為是兩個不同的符號。

符號在其作用範圍內必須唯一。

自定義的符號名不能與系統的保留字相同。

符號名不應與指令或偽指令同名。

6.可執行映像檔案通常由幾部分構成,它們有什麼特點?

答:可執行映像檔案通常由以下幾部分構成。

一個或多個程式碼段,程式碼段的屬性為只讀。

零個或多個包含初始化資料的資料段,資料段的屬性為可讀寫。

零個或多個不包含初始化資料的資料段,資料段的屬性為可讀寫。