Поле длины 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.

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