嵌入式面試題——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.可執行映像檔案通常由幾部分構成,它們有什麼特點?
答:可執行映像檔案通常由以下幾部分構成。
一個或多個程式碼段,程式碼段的屬性為只讀。
零個或多個包含初始化資料的資料段,資料段的屬性為可讀寫。
零個或多個不包含初始化資料的資料段,資料段的屬性為可讀寫。