繁体   English   中英

Turbo C ++:为malloc函数生成目标代码

[英]Turbo C++: Generate object code for malloc function

我正在使用Turbo C ++ 3.1。

我有一些需要C标准库的malloc的汇编模块。 所以我在我的.asm文件中有:

extern _malloc:proc

我想生成一个包含malloc()的目标文件。 为了使用链接器并构建可执行文件。 例:

tasm /zi bmlib.asm  // create object file: bmlib.obj
tasm /zi bmlibt.asm // create object (which contains main program): bmlibt.obj
? //Generate object file for malloc: malloc.obj
tlink /v3 bmlibt bmlib malloc // link all modules
bmlibt.exe // Execute the program 

如果您确实要在目标文件中使用Turbo C ++的malloc ,则可以使用tlib从标准库中提取该目标文件。 副手,我不记得有什么确定地给予tlib的标志,也不记得标准库的文件名,但是两者都应该很容易找到。

但是,您实际上并不需要这样做:如果仅在命令行上使用tcc ,它将自动编译并链接标准库中使用的模块。 不过,您实际上只需要在C中至少使用一个文件malloc取决于C启动代码中发生的一些初始化,因此即使您成功链接了它,但没有该启动代码,它实际上将无法工作。

malloc()是C(或C ++)运行时库的一部分。 您可能可以告诉链接程序静态链接C运行时(通常称为CRT),但通常它是动态链接的,因此可执行文件的大小较小。 无论如何,通常都没有选择将运行时的malloc()实现内置到单独的目标文件中。 当然,如果您实现自己的版本,它将成为您目标文件的一部分。 在这种情况下,您的实现将覆盖系统的实现。

因此,我想您应该寻找的是一种告诉链接器您想与C运行时库静态或动态链接的方法。 然后,将程序集目标文件链接到最终可执行文件后,便可以对其进行访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM