SDCC Z80: Избегайте адресов

Могу ли я исключить определенные адреса внутри сегмента кода в SDCC? Например, если мой сегмент кода простирается от адреса addr. От 0x0000 до 0x4000, могу ли я каким-то образом сказать компоновщику / компилятору избегать addr. от 0x2000 до 0x2100 и не разместить там код?

Вот два практических примера:

  1. Замена ПЗУ новой (радикально другой!) Версией и желание сохранить двоичную совместимость со старым ПЗУ. Некоторые абсолютные адреса в старом ПЗУ вызываются существующим программным обеспечением, и я хочу предоставить «режим совместимости», гарантирующий, что по крайней мере наиболее распространенный переход будет работать.
  2. Оборудование с отображением памяти делает неприятные вещи с ПЗУ (например, отключает его!), Если я "касаюсь" определенных адресов. Поэтому я хочу убедиться, что там никогда не помещается код.

Я мог бы создать несколько сегментов и вручную назначать им функции до "полного", но мне интересно, могу ли я получить помощь от компилятора / компоновщика? Поскольку код часто меняется, и я не хочу корректировать, что входит в какой сегмент для каждого исправления, которое увеличивает размер функции на несколько байтов ...

0 ответов

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