Я работаю над проектом 6502 в CA65, и мне трудно понять некоторые из директив.CA65 Segment Memory Map issue
Что я хочу сделать, это иметь сегмент, определенный так, как если бы он находился в другой части памяти, так что вся адресация этого кода выглядит так, как если бы он был уже в этом сегменте памяти во время компиляции, но он будет быть загружен основной программой и должен быть перемещен на место после загрузки ... это довольно простая модель для этих старых машин, но мне трудно получить правильную директиву DEFINE в команде сегмента.
Так у меня есть определение памяти, называемой MYMEM создается в файле CFG как место за пределами того, где программа фактически нагрузки, сказать что-то вроде этого:
MEMORY{
.
.
MYMEM start = $1000, size =$0200
.
}
и в I затем создать сегмент под названием MYMEMSEG
SEGMENTS{
.
.
MYMEMSEG: load=MYMEM, type =rw, define=yes;
.
.
}
Я затем попытаться получить доступ к _ _MYMEMSEG_LOAD__ или _ _MYMEMSEG_RUN__ или _ _MYMEMSEG_SIZE__ ценности, которые она утверждает, что она создает, но все они не определены ... сгенерированный файл MAP не содержит ничего с MYMEM или MYMEMSEG в них. .. так что Я не понимаю здесь?
Вы, вероятно, объявить эти символы, которые он создает, как внешние, как они были определены в отдельном файле исходного кода сборки. –
Я здесь не совсем понимаю ... здесь нет кода, чтобы сообщить об этом .export, чтобы позже беспокоиться об импорте/включении ... _SIZE__ _LOAD__ и _RUN__ должны быть созданы с помощью define = yes, так как Я об этом? – user282172
http://www.cc65.org/doc/ld65-5.html В частности, информация СЕГМЕНТА 5.2 – user282172