【问题标题】:Assembly call memory address汇编调用内存地址
【发布时间】:2012-08-29 23:41:52
【问题描述】:

这可能是一个非常愚蠢的问题,但是如何在 ASM 中调用内存地址?我正在使用代码调用 dword 557054(557054 是代码所在的位置......)但我认为它正在调用 557054 + 程序是否已加载到内存中。我的可执行加载器需要这个...

【问题讨论】:

  • 具体是什么架构? x86、SPARC、PPC 等...?
  • x86 使用 nasm 汇编器

标签: pointers assembly call


【解决方案1】:

有两种方法可以做到这一点,你可以使用CALL或者你可以使用JMP,第二种更灵活但如果你想与C风格的代码有一些兼容性则需要你做更多的工作

使用CALL的简单c函数调用

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

【讨论】:

  • 谢谢,哈哈,原来我的代码不起作用,因为链接器弄乱了函数指针地址。
  • 当某些东西没有被外部化(使用 C 代码)或有时没有正确声明为全局时,往往会发生这种情况。
猜你喜欢
  • 2015-10-27
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-06
  • 1970-01-01
  • 2013-06-17
相关资源
最近更新 更多