2

嘿,我正在使用 WinAVR 并用 C 编写 ATMEGA32。
基本上,我想通过以下方式将我的 C 程序链接到 asm:

asm(" ") 命令。

我试图将 C 中的内存位置定义为确切的内存位置,以便我可以在 asm 命令行中访问它们。

我有 5 个变量:

无符号字符 var1、var2、var3、var4、var5;

我知道我可以使用指向内存位置的指针,但我不确定如何做到这一点。
任何帮助,将不胜感激。
谢谢,
奥利弗。

4

2 回答 2

3

您可以使用 GCC 使用内联汇编器通过其 C 变量名称访问内存位置。有关更多信息,请参阅AVR-GCC 内联汇编程序手册。您还可以使用编译器扩展或链接器脚本将 C 变量放置在确切的内存位置。然而,编译器和汇编器的全部意义在于让我们不必像那样管理繁琐的细节。

于 2011-04-11T02:22:21.337 回答
3

此方法完全独立于编译器,简单明了:

#define var1 (*(volatile unsigned char *)0xDEADBEEF)
#define var2 (*(volatile unsigned char *)0xDECAFBAD)
#define var3 (*(volatile unsigned char *)0xBADC0DE)

等等

于 2011-04-11T02:55:49.880 回答