发表于2024-11-24
ARM體係結構與編程(第2版) pdf epub mobi txt 電子書 下載 2024
ARM處理器是一種16/32位的高性能、低成本、低功耗的嵌入式RISC微處理器,由ARM公司設計,然後授權給各半導體廠商生産,它目前已經成為應用最為廣泛的嵌入式處理器。《ARM體係結構與編程(第2版)》共為分14章,對ARM處理器的體係結構、指令係統和開發工具進行瞭比較全麵的介紹。其中包括ARM體係、ARM程序設計模型、ARM匯編語言程序設計、ARM C/C++語言程序設計、ARM連接器的使用、ARM集成開發環境CodeWarrior IDE的介紹及高性能的調試工具ADW的使用。並在此基礎上介紹一些典型的基於ARM體係的嵌入式應用係統設計的基本技術。通過閱讀本書,可以使讀者掌握開發基於ARM的應用係統的各方麵的知識。本書既可作為學習ARM技術的培訓材料,也可作為嵌入式係統開發人員的參考手冊。
第1章 ARM概述及其基本編程模型 1
1.1 ARM技術的應用領域及其特點 1
1.2 ARM體係結構的版本及命名方法 2
1.3 ARM處理器係列 7
1.4 ARM處理器的運行模式 11
1.5 ARM寄存器介紹 11
1.6 ARM體係的異常中斷 17
1.7 ARM體係中的存儲係統 19
第2章 ARM指令分類及其尋址方式 22
2.1 ARM指令集概要介紹 22
2.2 ARM指令的尋址方式 24
第3章 ARM指令集介紹 61
3.1 ARM指令集 61
3.2 一些基本的ARM指令功能段 110
3.3 Thumb指令介紹 120
第4章 ARM匯編語言程序設計 122
4.1 僞操作 122
4.2 ARM匯編語言僞指令 151
4.3 ARM匯編語言語句的格式 153
4.4 ARM匯編語言程序的格式 162
4.5 ARM匯編編譯器的使用 164
4.6 匯編程序設計舉例 166
第5章 ARM的存儲係統 175
5.1 ARM存儲係統概述 175
5.2 ARM中用於存儲管理的係統控製
協處理器CP15 176
5.3 存儲器管理單元MMU 186
5.4 高速緩衝存儲器和寫緩衝區 205
5.5 快速上下文切換技術 217
5.6 與存儲係統相關的程序設計指南 219
5.7 ARM存儲係統的實例 225
第6章 ATPCS介紹 242
6.1 ATPCS概述 242
6.2 基本ATPCS 242
6.3 幾種特定的ATPCS 246
第7章 ARM程序和Thumb程序混閤
使用 250
7.1 概述 250
7.2 在匯編語言程序中通過用戶代碼
支持interwork 251
7.3 在C/C++程序中實現interwork 256
7.4 在匯編語言程序中通過連接器
支持interwork 259
第8章 C/C++以及匯編語言的混閤
編程 263
8.1 內嵌匯編器的使用 263
8.2 從匯編程序中訪問C程序變量 270
8.3 匯編程序、C程序以及C++程序的
相互調用 271
第9章 異常中斷處理 276
9.1 ARM中的異常中斷處理概述 276
9.2 進入和退齣異常中斷的過程 279
9.3 在應用程序中安排異常中斷處理
程序 285
9.4 SWI異常中斷處理程序 288
9.5 FIQ和IRQ異常中斷處理程序 297
9.6 復位異常中斷處理程序 302
9.7 未定義指令異常中斷 302
9.8 指令預取中止異常中斷處理程序 303
9.9 數據訪問中止異常中斷處理程序 303
第10章 ARM C/C++編譯器 304
10.1 ARM C/C++編譯器概述 304
10.2 ARM編譯器命令行格式 306
10.3 ARM編譯器中的pragmas 319
10.4 ARM編譯器特定的關鍵詞 321
10.5 ARM編譯器支持的基本數據
類型 335
10.6 ARM編譯器中的預定義宏 337
10.7 ARM中的C/C++庫 339
第11章 ARM連接器 347
11.1 ARM映像文件 347
11.2 ARM連接器介紹 351
11.3 ARM連接器生成的符號 353
11.4 連接器的優化功能 354
11.5 運行時庫的使用 355
11.6 從一個映像文件中使用另一個映像
文件中的符號 359
11.7 隱藏或者重命名全局符號 362
11.8 ARM連接器的命令行選項 363
11.9 使用scatter文件定義映像文件的
地址映射 371
第12章 嵌入式應用程序示例 384
12.1 嵌入式應用程序設計的基本知識 384
12.2 使用semihosting的C語言程序
示例 388
12.3 一個嵌入式應用係統示例 392
12.4 進行ROM/RAM地址重映射的
嵌入式應用係統 401
12.5 一個嵌入式操作係統示例 405
第13章 使用CodeWarrior 412
13.1 CodeWarrior for ARM概述 412
13.2 簡單工程項目的使用 413
13.3 配置生成目標 424
13.4 復雜工程項目的使用 451
13.5 工程項目模闆 456
13.6 編譯和連接工程項目 461
第14章 ARM體係中的調試方法 465
14.1 ARM體係中的調試係統概述 465
14.2 基於Angel的調試係統 466
14.3 基於JTAG的調試係統 495
14.4 ADW使用介紹 498
參考文獻 513
其中的符號及參數說明如下。
:是指令助記符,如ADD錶示算術加操作指令。
{}:錶示指令執行的條件。
{S}:決定指令的操作是否影響CPSR的值。
:錶示目標寄存器。
:錶示包含第1個操作數的寄存器。
:錶示第2個操作數。
通常有下麵3種格式。
(1) 立即數方式。每個立即數由一個8位的常數循環右移偶數位得到。其中循環右移的位數由一個4位二進製的兩倍錶示。如果立即數記作,8位常數記作immed_8,4位的循環右移值記作rotate_imm,則有:
= immed_8循環右移(2*rotate_imm)
這樣並不是每一個32位的常數都是閤法的立即數,隻有能夠通過上麵構造方法得到的纔是閤法的立即數。下麵的常數是閤法的立即數:
0Xff,0x104,0xff0,0xff00
而下麵的數不能通過上述構造方法得到,則不是閤法的立即數:
0x101,0x102,0xFF1
同時按照上麵的構造方法,一個閤法的立即數可能有多種編碼方法。如0x3F0是一個閤法的立即數,它可以采用下麵兩種編碼方法:
immed_8=0x3F,rotate_imm=0xE 或者
immed_8=0xFC,rotate_imm=0Xf
但是,由於這種立即數的構造方法中包含瞭循環移位操作,而循環移位操作會影響CPSR的條件標誌位C。因此,同一個閤法的立即數由於采用瞭不同的編碼方式,將使某些指令的執行産生不同的結果,這是不能允許的。ARM匯編編譯器按照下麵的規則來生成立即數的編碼。
當立即數數值在0和0xFF範圍中時,令immed_8=,rotate_ imm=0。
其他情況下,匯編編譯器選擇使rotate_imm數值最小的編碼方式。
(2) 寄存器方式。在寄存器尋址方式下,操作數即為寄存器的數值。如下例所示:
MOV R3,R2 ; 將R2的數值放到R3中
ADD R0,R1,R2 ; R0的數值等於R1的數值加上R2的數值
(3) 寄存器移位方式。寄存器移位方式的操作數為寄存器的數值做相應的移位(或者循環移位)而得到。具體的移位(或者循環移位)的方式有下麵幾種。
ASR:算術右移。
LSL:邏輯左移。
LSR:邏輯右移。
ROR:循環右移。
RRX:擴展的循環右移。
移位(或者循環移位)的位數可以用立即數方式或者寄存器方式錶示。
下麵是一些寄存器移位方式的操作數示例:
MOV R0,R1,LSL #3 ; R0=R1*(2**3)
ADD R0,R1,R1,LSL #3 ; R0=R1+R1*(2**3)
SUB R0,R1,R2,LSR #4 ; R0=R1-R2/(2**4)
MOV R0,R1,ROR R2 ; R0=R1循環右移R2位
數據處理指令操作數的具體尋址方式有下麵11種。
#
, LSL #
, LSL
, LSR #
, LSR
, ASR #
, ASR
, ROR #
, ROR
, RRX
1. #
指令編碼格式
31 28 27 25 24 21 20 19 16 15 12 11 8 7 0
cond 0 0 1 opcode S Rn Rd rotate_imm immed_8
操作數生成方法
指令的操作數即為立即數#。立即數#的生成方法見前麵章節的介紹。當rotate_imm=0時,循環器的進位值(即 Carry-out 位)為CPSR中的C條件標誌位;當rotate_imm!=0時,循環器的進位值(即 Carry-out 位)為操作數的最高位bit[31]。
指令中操作數的語法格式
#
其中,= immed_8循環右移(2*rotate_imm)。
指令中操作數尋址操作的僞代碼
shifter_operand = immed_8 R ARM體係結構與編程(第2版) 下載 mobi epub pdf txt 電子書
很好的資料
評分okkkkkkkkkkkkkkkkk
評分很好的資料
評分買瞭一批書,還沒有來得及看,自己選的肯定可以
評分不錯哦,物流快,質量好,挺好的!!!
評分物流很快,服務態度好,東西一如既往地好,信賴京東!
評分書本質量好,是正版!
評分不錯的一本書,老師講的上麵也有
評分好像說有點難懂
ARM體係結構與編程(第2版) pdf epub mobi txt 電子書 下載