2012-05-16 36 views
1

ARM處理器我有一個索尼愛立信ARC S.我想要寫在ARM彙編語言它的程序。我熟悉MIPS架構和一點X86。彙編編程上索尼愛立信ARC小號

幫助我開始編寫一個簡單的程序,並告訴我什麼程序,模擬器或其他東西我需要做到這一點。

+0

我有許多嵌入式手臂的例子加上http://github.com/dwelch67一對夫婦的模擬器,我認爲mbed有從哪裏獲取工具,amber_samples信息和thumbulator是模擬器,取決於你的處理器內核你應該專注於你的教育。 –

回答

1

有許多基於GNU的交叉編譯器在那裏,這是很容易建立自己的,尤其如果你只是想你只需要建立binutils的彙編語言。

wget ftp://ftp.gnu.org/gnu/binutils/binutils-2.22.tar.gz 
tar xzvf binutils-2.22.tar.gz 
cd binutils-2.22 
../configure --target=arm-none-eabi --prefix=/pick/a/path --disable-werror --disable-nls 
make 
sudo make install 

你需要選擇要安裝我喜歡/ gnuarm自己的地方。可能會嘗試/ opt/gnuarm或任何你喜歡的。

如果你不想嘗試去codesourcery.com將帶你來指導其買入代碼的Sourcery圖形。尋找ARM的LITE版本,gnueabi版本沒問題,linux版本也不錯,你只需要彙編器和鏈接器或編譯器,彙編器和鏈接器。曾經有一個工具鏈

emdebian,已經有一段時間沒有嘗試過。人們仍然使用ygarto,如果在窗戶上使用winarm。

從那裏看我有http://github.com/dwelch67 LPC-h2148_samples或beaglebone_samples,yagbat等,如果你正在運行支持完整的ARM指令,如果是則基於Cortex-M核心mbed,stm32f4d,thumbulator核心的例子。我通常編寫blinker01的例子,如果只有一個在程序集中,然後切換到程序集加幾個例子。

如果MIPS是你唯一知道的ASM,手臂會在某些方面更簡單。 Mips有點不標準,大多數處理器使用帶有進位標誌,負標誌,零標誌,有符號溢出標誌(CNZV)的程序狀態字,並且用正常指令,加法,子等等設置這些標誌,然後分支他們。對於mips,你沒有狀態標誌,而是你指定說兩個寄存器,並說如果分支相等,它執行減去,然後如果相等的分支。其他處理器的減法要麼用減法來完成,要麼用比較結果進行減法,但不保存標誌以外的結果。 ARM的加載和存儲具有不同的語法,而不是sw $ 4,0x10($ 5),您將擁有str r4,[r5,#0x10]括號表示間接級別,#優先於常量。武器立即通常是8位或9位,其中立即數爲16位。用arm可以在一個指令中存儲多個寄存器stm r0 {r1,r2,r3,r4}將r1存儲在r0的地址中,r2存儲在r0 + 0x04的地址中,r3存儲在r0 + 0x08的地址中上。這通常用於在堆棧上和堆棧之外「推」和「彈出」事物。用arm可以在store或load上修改基址寄存器,例如ldr r1,[r0],#4與括號外的直接數字表示將r1存儲在r0的地址處,然後將4加到r0使您不必擁有一個額外添加r0,r0,#4指令。MIPS是不是一個分支延遲槽的唯一處理器,但爲了實用的目的假定它是,假設沒有其他處理器有延遲插槽,所以不要試圖把指令轉移之後,並期望他們執行的,也不是你需要分支後空指令等

GDB有ARMulator目錄下面模擬器開放臂它來源,我不知道如何訪問它。 qemu有很多手臂支持,但很少visiblity。我有thumbulator,這是拇指只(ARM指令的簡化版本設置非常相似,相比32位MIPS指令集的16位MIPS指令集),但會給你的感覺的變化武裝,模擬器爲方便閱讀,你可以隨意修改,以獲得可視性不管是怎麼回事,看內存總線,寄存器等skyeye的擁有數量的處理器模擬器,VBA和任天堂DS模擬器包含ARM處理器模擬器。加上無數的50美元以及一些低於20美元的包含ARM處理器的微控制器板。

0

人們會使用相同的工具,用於其它處理器,即Eclipse中,GNU,Visual Studio中,鏘等只有一個必須做第二次安裝和下載ARM代替的。

除非一個具有臂工作站,你將工作在你的x86機器和交叉編譯/組裝到ARM這樣一些手段是必要的,以獲得編譯的代碼進入到ARM機。調試通常通過串行遠程工作站完成,因此可以使用符號表。

+0

我可以使用Eclipse寫ARM彙編語言???怎麼樣?你能解釋更多嗎? – Soroush

相關問題