[arm匯編-譯] 02 寄存器以及基本算數(shù)運(yùn)算

原文地址:http://thinkingeek.com/arm-assembler-raspberry-pi/
閱讀建議:盡量閱讀原文


寄存器

作為核心,處理器可以簡(jiǎn)化為一個(gè)計(jì)算器。并且只能使用“寄存器”中的操作數(shù)。樹莓派中的arm處理器包含16個(gè)整形寄存器和32和浮點(diǎn)數(shù)寄存器。處理器利用這些寄存器分別來執(zhí)行整數(shù)和浮點(diǎn)數(shù)計(jì)算。暫時(shí)我們只關(guān)注整形寄存器。

16個(gè)整形寄存器命名方式如下:r0...r15。每個(gè)寄存器都是32bit。當(dāng)然這32bit可以根據(jù)需要任意編碼。也就是說,可以很方便的用"二進(jìn)制碼"來表示整數(shù),執(zhí)行整數(shù)計(jì)算的指令一般都使用這種編碼。因此后面如果沒有特別注明,都默認(rèn)寄存器中保存的是二進(jìn)制編碼的整數(shù)。

r0-r15寄存器并非都是通用寄存器,但現(xiàn)在不做區(qū)分。

基本算數(shù)運(yùn)算

基本上所有的處理器都可以利用寄存器進(jìn)行算數(shù)運(yùn)算。可以將兩個(gè)寄存器中的值相加,再次以上一章中的代碼舉例:

/* -- sum01.s */
.global main
.func main 

main: 
mov r1, #3 /* r1 ← 3 */ 
mov r2, #4 /* r2 ← 4 */ 
add r0, r1, r2 /* r0 ← r1 + r2 */ 
bx lr

編譯并執(zhí)行,錯(cuò)誤碼是7
$ ./sum01 ; echo $?
7
另可以通過復(fù)用寄存器簡(jiǎn)化程序:

/* -- sum02.s */
.global main
.func main 
main: 
mov r0, #3 /* r0 ← 3 */ 
mov r1, #4 /* r1 ← 4 */ 
add r0, r0, r1 /* r0 ← r0 + r1 */ 
bx lr

執(zhí)行結(jié)果與上面程序相同。
$ ./sum02 ; echo $?
7

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 算術(shù)和邏輯指令A(yù)DC : 帶進(jìn)位的加法(Addition with Carry)ADC{條件}{S} <dest...
    luffier閱讀 4,019評(píng)論 0 3
  • 前言 本文翻譯自iOS Assembly Tutorial: Understanding ARM 翻譯的不對(duì)的地...
    桃紅宿雨閱讀 18,423評(píng)論 7 198
  • 走路匆忙,吃飯匆忙,逛街都是匆匆忙忙,不知道什么時(shí)候,生活的步子好像被千萬只豺狼追趕般緊張。 大學(xué)最自如的環(huán)境里,...
    九界jiujie閱讀 465評(píng)論 0 1
  • 小時(shí)侯是個(gè)安靜內(nèi)向的孩子,父親對(duì)我們特別嚴(yán)厲,但我卻一直是個(gè)敏感,自尊心特強(qiáng)的孩子,往往壓抑到無法自拔,偶爾從零零...
    阿萍28閱讀 228評(píng)論 1 3
  • 今天是國(guó)慶節(jié),我本來想去天安門的,那是我一直想去的地方。但是媽媽說今天的人會(huì)特別多,會(huì)排好長(zhǎng)時(shí)間的隊(duì),還會(huì)堵車,所...
    張梓墨媽媽閱讀 863評(píng)論 0 0

友情鏈接更多精彩內(nèi)容