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 运行时库链接,无论是静态还是动态。 然后,程序集对象文件在链接到最终可执行文件时应有权访问它。
相关文章:
- 当前不会命中断点。没有调试器目标代码类型的可执行代码与此文件关联
- 使用 gtest 框架在单元测试代码中检查目标对象的私有变量的最佳实践是什么?
- 从.o目标文件中提取函数的原始机器代码?
- 为不同目标MCU开发C/C++代码的区别
- CLion 没有调试我的目标之一 - 立即"进程已完成,退出代码为 0"
- 我在区分源代码、目标代码、汇编代码和机器代码时感到困惑
- 目标代码可以转换回LLVM IR吗?
- 如何在Visual Studio代码中的生成目标之间切换
- complex.h 适用于 Win32 目标以外的其他编译器,例如代码编辑器工作室 (CCS)
- 避免具有多个目标的重复CMAKE代码
- Turbo C++:为 malloc 函数生成目标代码
- 外部"C"已编译目标代码中的函数
- 没有要成为目标的规则:代码块
- 全屏获取c ++程序的输出.它是控制台输出窗口的目标代码
- 错误 C1190:托管目标代码需要'/clr'选项
- 当可以反编译时,ISV 如何隐藏其目标代码
- Map初始化:目标代码比源代码大50倍
- 如何找到c++文件的目标代码
- 如何从g++生成的目标代码中去掉表示源头文件的绝对路径的字符串
- 目标代码重定位和英特尔引脚交互