2

我最近买了一个 Arduino Uno,它基本上是一个 atMega328 avr 处理器,具有所有细节,例如 I/O 和与计算机的连接,为您处理。

我已经使用 Arduino IDE 和 avr-gcc 集合成功编写了代码。但是,我想为它编写纯汇编代码,但我遇到了死胡同,因为似乎几乎没有关于这方面的文档。也就是说,我想编写“纯”程序集,没有内联 c 程序集等。我想要这样做的说明,如果可能的话,一个示例程序(gcc-avr 的程序集输出没有那么有用,正在难以理解和所有)。
尤其是:

  • 如何指示 avr-as 将该代码放入例如中断向量中?
  • 有哪些指令可用?
  • .data 和 .bss 部分在哪里?

感谢您指出适当的示例。

4

3 回答 3

3

我能找到的最好的文档是avr-gcc 汇编器教程。这解释了:

  • 可以使用 avr-libc 使用中断向量。为了在没有外部库的情况下执行此操作,可以参考源代码,正如 Brett Hale 建议的那样。

  • 它提到了特定于 avr 的指令。

它还附带一个简单的示例。

于 2012-05-10T12:05:58.647 回答
2

我建议你看看avr-libc库。不要让名字误导你。其中大部分是高度优化的 AVR 汇编器,带有链接器脚本、低级硬件访问等。

于 2012-05-10T10:38:58.917 回答
0

http://www.cs.nmsu.edu/~jcook/arduino/index.php上的 Arduino Wiki 提供了一种方法来做到这一点。它需要修改和重建 Arduino IDE 以允许使用汇编代码(.s 文件)。

于 2013-01-12T00:33:12.923 回答