Я знаю, что подобные вопросы задавались, но все равно послушайте.
В этом семестре я написал довольно много программ для Easy68k, и мне любопытно, почему директива org всегда установлена на $1000, $2000 или $2500.
Хотя ответ «по личному соглашению», меня больше интересует следующее:
- Каковы преимущества установки директивы org, ЦП может выполнять что угодно от 0x0 до 0xffffffff, так зачем нужно смещать запуск программы до 0x1000?
Например:
org $1000
start:
moveq #9, d0
trap #15
end start
работает, но смещается на 4096 байт вниз
start:
moveq #9, d0
trap #15
end start
тоже работает, но не компенсируется вообще
Так зачем же нужна эта директива? Я не резервирую [0x0, 0x1000) для какой-либо конкретной цели, так какой смысл сохранять это смещение?
Выводы на данный момент
- Easy68k не имеет места по умолчанию для глобальных переменных, они помещаются в pc (обычно в конце программы по соглашению).
- Указатель стека Easy68k по умолчанию находится в 0, увеличивается вниз до 0xffffffe и вниз (выровнено по словам): это означает, что нет конфликта с областью [0, 0x1000). На самом деле, это приведет к повреждению кода до того, как будет повреждена область [0, 0x1000).
Мне очень любопытно.
Спасибо заранее!
~Дмитрий