Поле длины OMF(Object Module Format) отображается неверно
Я немного запутался с записью PUBDEF в формате объекта OMF. Мой ассемблер сгенерировал результат, в котором говорится, что запись составляет 4000 байт, когда это явно не так, зачем ему это делать?
Изображение шестнадцатеричного вида OMF
0xa0 и 0x0f - длина записи в формате с прямым порядком байтов,
пожалуйста, просмотрите спецификацию: http://pierrelib.pagesperso-orange.fr/exec_formats/OMF_v1.1.pdf
Также представляется, что строки имеют нулевую длину байта и в одной точке даже имеют нулевую длину строки без предоставленной строки. Может я неправильно читаю файл? Я провел часы сейчас и борюсь.
Если кто-то может помочь мне с моей проблемой, поскольку я пишу компоновщик, и не могу продолжать, не понимая этого.
Спасибо
1 ответ
В файле нет записи PUBDEF. Похоже, вы неправильно рассчитали размер предыдущей записи:
0000:80 THEADR
000e:88 CoMENT
0032:96 LNAMES
0041:98 SEGDEF
004B:98 SEGDEF
0055:88 COMENT
005C:a0 LEDATA
006E:a0 LEDATA
007b:8a MODEND
Научитесь использовать более изощренные инструменты для проверки OMF, такие как Tdump.exe или ODU.exe.