尝试将变量定义到特定的内存位置
嘿,我正在使用 WinAVR 并用 C 语言对 ATMEGA32 进行编程。
基本上,我想通过以下方式将我的 C 程序链接到 asm:
asm(" ") 命令。
我试图将 C 中的内存位置定义为精确的内存位置,以便我可以在 asm 命令行中访问它们。
我有5个变量:
无符号字符 var1、var2、var3、var4、 var5;
我知道我可以使用指向内存位置的指针,但我不确定如何执行此操作。
任何帮助将不胜感激。
谢谢,
奥利弗.
Hey, im using WinAVR and programing an ATMEGA32 in C.
Basically, I want to link my C program to asm via the:
asm(" ") command.
Im trying to define memory locations in C to exact memory locations so that I can then access them within the asm command line.
I have 5 variables:
unsigned char var1, var2, var3, var4,
var5;
I know I could use pointers to a memory location, but im unsure how to do this.
Any help would be appreciated.
Thanks,
Oliver.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
该方法完全独立于编译器,简单明了:
等等。
This method is completely compiler-independent, simple, and straightforward:
etc.
您可以使用 GCC 通过内联汇编器通过 C 变量名称来访问内存位置。请参阅 AVR-GCC 内联汇编手册了解更多信息。您还可以使用编译器扩展或链接器脚本将 C 变量放置在确切的内存位置。然而,编译器和汇编器的全部目的是让我们不必管理这样繁琐的细节。
You can access memory locations by their C variable names with inline assembler using GCC. Please refer to the AVR-GCC Inline Assembler Cookbook for more information. You can also place C variables at exact memory locations using compiler extensions or linker scripts. However, the whole point of compilers and assemblers is so that we don't have to manage tedious details like that.