В основном я использую IDA Pro для дизассемблирования некоторых двоичных файлов из SPEC2006 и внесения некоторых изменений, чтобы сделать их nasm-пересобранными в 32-битной Windows 7.
Я нахожу одну проблему в дизассемблированном ассемблерном коде, сгенерированном из 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
Может ли кто-нибудь помочь мне? Спасибо!
offset
. Простоdd LeadUp1
и т. д. должны это сделать. Если у вас их много, вы можете%define offset
(как ничего), чтобы Nasm проигнорировал их. Наличие таблицы переходов вsection .text
не должно быть проблемой. Память будет доступна только для чтения, но вы, вероятно, все равно не хотите, чтобы ваша таблица переходов была доступна для записи... - person Frank Kotler   schedule 16.02.2014