Попытка определить переменные для определенных областей памяти - PullRequest
2 голосов
/ 11 апреля 2011

Привет, я использую WinAVR и программирую ATMEGA32 на C.
По сути, я хочу связать свою C-программу с asm через:

asm ("") команда.

Я пытаюсь определить ячейки памяти в C, чтобы точно определить ячейки памяти, чтобы я мог получить к ним доступ в командной строке asm.

У меня есть 5 переменных:

unsigned char var1, var2, var3, var4, var5;

Я знаю, что мог бы использовать указатели на область памяти, но я не уверен, как это сделать.
Любая помощь будет оценена.
Спасибо,
Оливер.

Ответы [ 2 ]

3 голосов
/ 11 апреля 2011

Этот метод полностью независим от компилятора, прост и прост:

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

и т. Д.

3 голосов
/ 11 апреля 2011

Вы можете получить доступ к ячейкам памяти по их именам переменных C с помощью встроенного ассемблера, используя GCC. Пожалуйста, обратитесь к Встроенная сборочная книга AVR-GCC для получения дополнительной информации. Вы также можете разместить переменные C в точных местах памяти, используя расширения компилятора или сценарии компоновщика. Однако весь смысл компиляторов и ассемблеров в том, что нам не нужно управлять такими утомительными деталями.

...