嘿,我正在使用WinAVR并在C中编程ATMEGA32 基本上,我想通过以下方式将我的C程序链接到asm:
asm(“”)命令。
我试图将C中的内存位置定义为精确的内存位置,以便我可以在asm命令行中访问它们。
我有5个变量:
unsigned char var1,var2,var3,var4, VAR5;
我知道我可以使用指向内存位置的指针,但我不确定如何做到这一点
任何帮助将不胜感激
谢谢,
奥利弗。
答案 0 :(得分:3)
您可以使用GCC使用内联汇编程序通过C变量名访问内存位置。有关更多信息,请参阅AVR-GCC Inline Assembler Cookbook。您还可以使用编译器扩展或链接描述文件将C变量放在精确的内存位置。但是,编译器和汇编器的全部意义在于我们不必管理那些繁琐的细节。
答案 1 :(得分:3)
此方法完全独立于编译器,简单且直接:
#define var1 (*(volatile unsigned char *)0xDEADBEEF)
#define var2 (*(volatile unsigned char *)0xDECAFBAD)
#define var3 (*(volatile unsigned char *)0xBADC0DE)
等