本篇文章的目的是讓ARM匯編初學者以一個比較簡單的方式得到一個能夠運行ARM匯編指令的環境,以協助理解學習ARM匯編,因為我最近剛學習ARM匯編,看了一堆語法但仍然是懵懵的,就很想有一個環境能夠寫一寫代碼執行一下看看效果。
看網上都是用keil的較多,但是感覺那個配置起來比較復雜,我是看一個課程里面有位老師用的這個IDE,看上去非常簡單易用,感覺很nice於是就用了這個。
下載CodeWarrior for ARM Developer Suite v1.2,按照文件內的說明安裝即可。
安裝完成后啟動:

界面是這樣的:

先創建一個項目:

項目類型就選第一個,然后設置項目名稱和保存位置:

創建完彈出一個窗口,這個就是項目管理窗口,看起來有點老式風格,因為這款軟件確實很老...

然后為這個項目創建一個test.s的文件,等下要在這個test.s文件內編寫匯編代碼,仍然是File-->New:

這次需要切換到File選項卡,輸入文件名稱,需要注意的是因為這里的文件類型只有Text File,這個IDE是把所有源碼都看作是文本類型的,因此在指定File name的時候需要同時指定文件的后綴名,然后指定文件保存的路徑,然后勾選Add to project,選擇剛剛創建的項目,然后把Target一股腦兒都勾選上:

點擊確定后會彈出一個源碼編輯窗口,調整一下布局,現在界面是這個樣子了:

編寫匯編指令的模板是這個樣子:
AREA test, CODE, READONLY ENTRY START ; 這是模板,在這里寫ARM匯編指令 END
可以把這段模板粘貼帶代碼編輯窗口,然后修改注釋部分為想要實驗的匯編指令。
在源碼編輯窗口中編輯匯編代碼,這里就以一個計算1+1=2的例子,代碼如下:
AREA test, CODE, READONLY ENTRY START MOV R0, #0x1 MOV R1, #0x1 ADD R2, R0, R1 END
下個斷點:

然后在項目管理窗口中選擇這個文件,以debug模式運行:

會彈出一個新的窗口,這個窗口就是一個虛擬仿真系統,用來模擬ARM環境運行此程序,調整窗口的布局看起來更舒服一些:

剛才那個寄存器面板是單擊工具欄中的這個按鈕打開面板,然后展開里面的current得到的,current讓我們不需要關心現在到底處在什么模式下,反正我就要看寄存器的值:

這個工具的視圖調整不是特別流暢,我發現我多次單擊同一個按鈕竟然把一個面板打開了多次...如果某個面板不想看到,在其標題欄的空白處右擊,然后close即可。

接下來步進執行程序:

可以看到藍色光標向下移動了一條指令,同時pc寄存器的值也跟着發生了改變,剛才pc寄存器的值是0x8000,現在變成了0x8004,因為我們是ARM模式,每條指令32位,正好是4個字節,所以每執行完一條指令pc寄存器的值往前移動4個字節。同樣變紅色的還有r0,因為MOV R0, #0x1這條指令將1賦值給R0,同時我們也明白寄存器標為紅色表示提醒我們這個寄存器的值在上一條指令執行完發生了改變。
讓我們繼續step,執行完MOV R1, #0x1之后,現在寄存器R1的值也被賦值了1,同時pc寄存器繼續移動:

然后繼續step,執行完ADD R2, R0, R1之后,寄存器R2的被賦值為2,至此完成了1+1=2的運算:

其它指令的理解請自行調試練習。
