###### tags: `組合語言` # 組合語言共筆 1 : ARM 暫存器架構 & 執行模式 ## ARM 執行模式 - **(user)** User mode : 使用者模式 - **(system)** System mode : 執行作業系統程式碼 - **(fiq)** FIQ mode : 快速中斷模式,用於高速傳遞資料 - **(irq)** IRQ mode : 中斷模式,普通中斷處理 - **(svc)** SVC mode : 管理(監視)模式,系統復位、軟中斷 - **(abt)** ABT mode : (Abort mode),資料訪問終止模式,用於保護記憶體 - **(und)** Undefined mode : 指令未定義中止,處理未知指令情況 <br> ## ARM Registers 暫存器 - 用途 : 用來暫存指令、數據和位址...  :::warning ### 1. 通用暫存器 : > r0 - r14 > 是在所有執行**模式都是可以存取的暫存器** > - **r0 - r7 通用暫存器,在所有模式都會被使用** > - **r13 : 堆疊暫存器(SP/Stack Pointer) : 指向目前處理器模式的堆疊的堆疊頂端** > - **r14 : 連結暫存器 (LR/Link Register) : 存放(副)函數返回的位置** > - **r15 : 程式計數器 (PC/ Program Counter) : 儲存、指向下一道要執行的指令的位置** > > // 補充 : r12 也稱作 [ IP ] ( The Intra-Procedure-call scratch register ) > // 補充 : r11 也稱作 [ FP ] ( frame pointer ) > // 詳細解說 - [ARM FP 介紹](https://read01.com/M0onoa.html#.Y2p9mMtBxD8) ========================================= > > 在不同的模式中,也會有**獨立的 SP、LR 暫存器**, > 使 Arm 的模式可以快速切換 > - r13_svc - r14_svc > - r13_abt - r14_abt > - r13_irq - r14_irq > - r13_undef - r14_undef > ========================================= > > 當切換到 "**快速中斷模式**" 時 > - r8_fiq - r14_fiq 會取代 r_8 - r_14 > 有利於縮短快速中斷的時間 > >  ::: :::warning ### 2. 狀態暫存器 用來存取狀態資訊,有分為兩種狀態暫存器 - **CPSR** : 儲存 "flag bits"(條件旗標)、中斷位元、紀錄Arm模式... - **SPSR** : 當異常出現時,用來儲存 CPSR 值, 以便異常處理結束後返璇工作狀態  <br> - **N ( negative )** : 此 bit 用來表示當前指令運算的結果,N=1 結果為負數 N=0 結果為正數 or 零 - **Z ( zero )** : 表示當前指令運算的結果是否為 0,Z=1 表示結果為 0 Z=0 : 表示結果不為 0 - **C ( Carry )** : - 在加法指令中,當結果產生進位,C=1,表示無符號發生溢位(overflow) 其他情況 C=0 - 在減法指令中﹑運算發生借位 C=0,表示無進位,其他情況 C=1 - **V ( overflow )** : 當進行加減運算發生溢位 Overflow,V=1,[算數溢位](https://zh.wikipedia.org/wiki/%E7%AE%97%E8%A1%93%E6%BA%A2%E5%87%BA) <br> - **M[4:0] (Mode)** : 表示當前模式 ::: <br> ## Reference - [ARM 基礎——執行模式,暫存器,指令系統,彙編,異常中斷處理](https://www.gushiciku.cn/pl/p3Fm/zh-tw) - [ARM 處理器的結構](http://sp1.wikidot.com/arm) - [暫存器-維基百科](https://zh.wikipedia.org/zh-tw/%E5%AF%84%E5%AD%98%E5%99%A8) - [[MASM學習筆記]第一課:數字系統與暫存器](https://it-easy.tw/masm-class-1/2/) - [附錄三 80x86 及 80x87 暫存器 ](https://wanker742126.neocities.org/new/dos_asm/ap03.html)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up