Наверное, это действительно глупый вопрос, но как вызвать адрес памяти в ASM? Я использую кодовый вызов dword 557054 (557054 - это код, расположенный ...), но я полагаю, что он вызывает 557054 +, когда программа загружалась в память. Мне это нужно для моего исполняемого загрузчика ...
Адрес памяти вызова сборки
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
Спасибо, lol, оказывается, мой код не работал, потому что компоновщик испортил адрес указателя функции.
- person user1454902; 30.08.2012
Это обычно происходит, когда что-то не извлекается (с кодом C) или иногда неправильно объявлено глобальным.
- person Jesus Ramos; 30.08.2012