2015-12-18 6 views
3

Я работаю над проектом 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 в них. .. так что Я не понимаю здесь?

+0

Вы, вероятно, объявить эти символы, которые он создает, как внешние, как они были определены в отдельном файле исходного кода сборки. –

+0

Я здесь не совсем понимаю ... здесь нет кода, чтобы сообщить об этом .export, чтобы позже беспокоиться об импорте/включении ... _SIZE__ _LOAD__ и _RUN__ должны быть созданы с помощью define = yes, так как Я об этом? – user282172

+0

http://www.cc65.org/doc/ld65-5.html В частности, информация СЕГМЕНТА 5.2 – user282172

ответ

3

Я думаю, что линкер экспортирует их, но ваш код должен импортировать их:

.import __MYMEMSEG_LOAD__, __MYMEMSEG_SIZE__ 
+0

Я попробую это, но мне кажется немного интересным, что для того, чтобы файл карты имел ссылку, код должен где-то включать директиву импорта ... Я бы подумал, что определить будет все, что было бы необходимо для его, по крайней мере, для его создания в файле карты. – user282172