【发布时间】:2012-12-08 01:02:11
【问题描述】:
我使用的是 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
【问题讨论】:
-
如果你想使用运行时的
malloc(),你需要链接运行时库(因为malloc()当然有它自己的依赖集)。您还需要确保正确初始化运行时。您可能会发现将汇编文件链接到一个小的 C 程序更容易,该程序除了调用汇编语言程序的入口点之外什么都不做。或者也许实现一个简单的malloc() -
谢谢。 C 文件提示很棒。要实现我自己的 malloc,我需要使用中断来向操作系统请求空间,对吗?
-
这可能是一种方法。我想有一种方法可以让链接器设置 .exe 标头,以便在加载进程时有一个内存池,但是自从我使用 MS-DOS 以来已经很长时间了,所以我不能给出任何有关如何工作的详细信息。
标签: c++ c assembly linker tasm