簡體   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