【问题标题】:How to call malloc in x86_64 asm如何在 x86_64 asm 中调用 malloc
【发布时间】:2020-10-21 00:31:22
【问题描述】:

我试图在 Visual Studio Community 2019 程序集中调用 malloc,但我不断收到对符号 malloc 的未定义引用。

mov rcx,10h
call malloc

当我得到对 malloc 的未定义引用时无法编译 我什至用 _malloc 尝试过同样的问题。 我是否缺少某种包含?

【问题讨论】:

  • 如果您引用了 exact 错误消息,这将是一个更好的问题,因此很明显它来自汇编程序,而不是链接时。 (如果您声明了extern malloc,但随后没有与C 库链接,那么在成功组装后,您会在链接时期望某种未定义的引用。)

标签: assembly malloc x86-64 masm msvcrt


【解决方案1】:

这是通过在数据部分放置一个外部来解决的

.data
extern malloc: proc
.code 
;Some code;

【讨论】:

  • 如果这确实解决了您的问题,您应该接受您的回答!
  • 我要等2天
  • 哦,那我的错。我忘了等待的时间是如此之长。没关系。
  • 您确定extern malloc: proc 必须在.data 中吗?这似乎很奇怪,除非在您声明它的位置创建一个用于动态链接的占位符(用于间接调用的指针)。我不使用 MASM,但在其他操作系统的其他汇编程序中,例如NASM,extern malloc 可以在任何地方,只是一个与当前部分没有交互的指令。
猜你喜欢
  • 2020-04-29
  • 1970-01-01
  • 2010-11-15
  • 2014-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多