Адрес памяти вызова сборки

Наверное, это действительно глупый вопрос, но как вызвать адрес памяти в ASM? Я использую кодовый вызов dword 557054 (557054 - это код, расположенный ...), но я полагаю, что он вызывает 557054 +, когда программа загружалась в память. Мне это нужно для моего исполняемого загрузчика ...


person user1454902    schedule 29.08.2012    source источник
comment
Конкретно какой архитектор? x86, SPARC, PPC и т. д.?   -  person Jesus Ramos    schedule 30.08.2012
comment
x86 с использованием ассемблера nasm   -  person user1454902    schedule 30.08.2012


Ответы (1)


Есть два способа сделать это: вы можете использовать CALL или вы можете использовать JMP, второй более гибкий, но требует от вас немного дополнительной работы, если вам нужна некоторая совместимость с кодом в стиле C.

Простой вызов c-функции с использованием CALL

push eax ; push args to stack
push ebx
call my_func ; my_func can be a c exported function or defined as a macro or asm function
person Jesus Ramos    schedule 29.08.2012
comment
Спасибо, lol, оказывается, мой код не работал, потому что компоновщик испортил адрес указателя функции. - person user1454902; 30.08.2012
comment
Это обычно происходит, когда что-то не извлекается (с кодом C) или иногда неправильно объявлено глобальным. - person Jesus Ramos; 30.08.2012