Как бороться с таблицей переходов, встроенной в секцию.text в nasm?
По сути, я использую IDA Pro для дизассемблирования некоторых двоичных файлов из SPEC2006 и выполняю некоторые модификации, чтобы сделать его доступным для носителей в Windows 7 32bit.
Я нахожу одну проблему в разобранном ассемблерном коде, сгенерированном из IDA Pro, например:
;this is .text section
.....
LeadUpVec:
dd offset LeadUp1
dd offset LeadUp2
dd offset LeadUp3
LeadUp1:
;this is .text section
Очевидно, IDA Pro поместила эту таблицу переходов в код.
Я использую Nasm для сборки этого кода, и он генерирует это:
error: comma expected after operand 1
в каждой из четырех строк
Я изменяю это так:
;this is .text section
.....
section .data <--- I add it here
LeadUpVec:
dd offset LeadUp1
dd offset LeadUp2
dd offset LeadUp3
section .text <--- I add it here
LeadUp1:
;this is .text section
Но он по-прежнему генерирует одинаковые ошибки в каждой из четырех строк...
error: comma expected after operand 1
Кто-нибудь может мне помочь? Благодарю вас!
1 ответ
Хорошо, считай это "ответом".
Nasm не использует ключевое слово смещения. Просто дд LeadUp1 и т. Д. Должен это сделать. Если у вас их много, вы можете% определить смещение (как ничто), чтобы Nasm игнорировал его. Наличие таблицы переходов в секции.text не должно быть проблемой. Память будет доступна только для чтения, но, вероятно, вы все равно не хотите, чтобы ваша таблица переходов была доступна для записи...