ARM
基于RISC指令集
- 指令少:有些指令集也就100多條,甚至少于100條指令
ARM指令只能處理寄存器內(nèi)的數(shù)據(jù),內(nèi)存數(shù)據(jù)只能通過(guò)load/store訪(fǎng)問(wèn)存儲(chǔ)器,將內(nèi)存的數(shù)據(jù)讀取到寄存器,經(jīng)過(guò)指令處理后,再將數(shù)據(jù)存儲(chǔ)到內(nèi)存中
例如將內(nèi)存0x70009中的數(shù)值加1,X86的指令為add [0x70009],1即可,而arm指令則需要先將0x70009地址的數(shù)據(jù)通過(guò)load指令加載到R1寄存器中,然后再ADD R1 R1 #1(即R1=R1+1),然后再將R1寄存器中的數(shù)據(jù)store到內(nèi)存地址中
擁有比CISC更多的通用寄存器,用于大量的寄存器數(shù)據(jù)運(yùn)算以及存放
由于RISC指令集都是等長(zhǎng)的指令,所以它的執(zhí)行周期比較固定,都會(huì)比較短,從而將整體指令執(zhí)行速度提升。在ARM中大多數(shù)指令可以用于分支跳轉(zhuǎn)的條件判斷。
ARM的兩種運(yùn)行模式
- ARM模式
- Thumb模式
ARM架構(gòu)在ARMv3之前是小端排序(Little Endian)的,在那之后,ARM處理器提供一個(gè)配置項(xiàng),可以通過(guò)配置在大端和小端之間切換。
X86
基于CISC指令集
- 指令多:約幾百條指令,指令集龐大,功能豐富,一條指令可能可以替代多條RISC指令
允許進(jìn)行復(fù)雜的內(nèi)存訪(fǎng)問(wèn)操作
- 立即尋址
- 直接尋址
- 基址變址尋址
- 寄存器間接尋址
- 寄存器尋址
- 寄存器相對(duì)尋址
擁有的寄存器數(shù)量比RISC少很多
CISC是變長(zhǎng)指令集,指令執(zhí)行周期不固定
X86運(yùn)行模式
- 實(shí)模式(80286之前)
- 保護(hù)模式(80386之后,包括奔騰等CPU)
Intel的x86/x64系列CPU是小端排序(Little-Endian)的。