2012-05-10 140 views
2

我最近買了一個Arduino Uno,它基本上是一個atMega328 avr處理器,具有所有的細節,如I/O和連接到計算機照顧你。使用avr-gcc編寫彙編代碼

我已經成功地使用Arduino IDE和avr-gcc集合編寫了代碼。但是,我想爲它編寫純的彙編代碼,而且我已經遇到了死路,因爲似乎沒有任何關係。這就是說,我想寫'純'彙編,沒有內聯彙編等。我想要這樣做的指示,如果可能的話,還有一個示例程序(gcc-avr的彙編輸出不是那很有幫助,被難以理解和所有)。
特別是:

  • 如何才能指導AVR-才能把這些代碼在例如中斷向量?
  • 有哪些指令可用?
  • .data和.bss部分在哪裏?

讚賞我指出適當的例子。

+0

不是一個真正的答案,但http://avr-asm.tripod.com/可能有幫助 – Justin808

+0

@ Justin808謝謝,但這個網站似乎沒有談論特定氣體的語法,慣例等,這是我請求,因爲avr功能已被Atmel充分記錄。 – byrondrossos

+1

http://github.com/dwelch67/avr_samples,不幸的是,似乎我的avr樣本不是gnu彙編程序,而是avra。如果你在我的回購餘地裏遊蕩,雖然你會看到很多很多gas/gcc的例子,但是你可以找到簡單的鏈接腳本。相同的主題適用於任何目標,鏈接器腳本具有適當的ram或rom和ram地址,_start:符號作爲入口點,首先將引導asm代碼對象放在-ld命令行中,以便將其置於二進制等。如果它不幫助我可以做一個牛痘作爲avr樣本 –

回答

3

我能找到的最好的文檔是the avr-gcc assembler tutorial。這解釋說:

  • 人們可以使用使用的中斷向量avr-libc。爲了在沒有外部庫的情況下做到這一點,可以參考Brett Hale的建議。

  • 它提到了avr專用指令。

它還帶有一個簡單的例子。

2

我建議你看看avr-libc庫。不要讓名字誤導你。它的大部分高度優化的AVR彙編,以連接器腳本,低層次HW訪問等