Си для АВРа изучаю недавно, поэтому образовался такой вопрос.
Есть проблема, легко решаемая на асме: после тела (откомпилированной) программы идут данные, подгружаемые другой (пользовательской) программой, то есть в исходном файле (тексте) этих данных нет, внешняя программа их добавляет в хекс-файл. Длина программы может меняться от версии к версии, внешние данные тоже переменной длины, то есть могут быть и пара байт, а могут быть до конца памяти проца. Дополнительное условие: пользователю не должен быть доступен код (текст) программы, то есть отконвертировать внешние данные в Си-файл а потом подгружать их при компиляции (каждый раз компилировать) не предлагать.
Как я это делаю на асме: после тела программы и всех внутренних констант пишу метку
end_prog: ; конец программы
после метки ничего нет. на эту метку ссылаюсь в теле программы ( типа ldi zl, low (end_prog * 2) ) и все путем.
Как такое же сделать на си? Может есть какая-то переменная типа "последний занятый байт" или "длина программы"?
Си- Винавр, но я только начал знакомиться, могу перейти на Иар. Хочется универсального решения.