Структура большого ассемблерного кода (разница для включения файлов.asm/.inc)

Я только начал более крупный проект, полностью закодированный в Assembly. Наличие нескольких подпрограмм, макросов, таблиц памяти и т. Д. Мне интересно, как мне лучше разделить код на несколько файлов. Цель очевидна - лучшая структура и лучшая читаемость.

В настоящее время я использую.inc-файл, содержащий все мои определения констант (.equ) но как справиться со многими подпрограммами? Если я хочу поместить их в другой файл, нужно ли мне использовать.asm-файл (поскольку он содержит исполняемый код)? Более общий: в чем разница между.asm- и.inc-файлами, особенно в том, что касается их включения в один основной файл в конце?

И как только я разделю файл, как я могу обработать несколько зависимостей (то есть файл A включает в себя файл B и C, из которых файл B также включает файл C). Поскольку, по-видимому, моя текущая среда, Atmel Studio 6, не любит двойные включения.

1 ответ

Есть более сложная проблема, и это распределение регистров. Поскольку вы создаете весь код, вы можете столкнуться с проблемами, если для большего количества функций требуется определенный регистр, а одна функция вызывает другую. Компилятор C достаточно умен и может справиться с ним в соответствии с настройками оптимизации. Поэтому удивительно большой проект ASM может быть менее эффективным, чем C-код.

Другие вопросы по тегам