2016-07-05 93 views
1

我正在學習一個編譯器教程。現在我試圖實現向量(或數組)。作者提供了一個C文件,包括函數來打印整數,初始化數組(malloc)等,並要求我在我的編譯器生成的x86代碼中調用這些函數。爲什麼我們在編寫編譯器時需要運行時庫?

我的問題是:爲什麼我們需要那個?我們不能使用x86系統調用或中斷嗎?

是因爲通過使用運行時庫,它使寫入編譯器更容易?但最終的可執行文件將會變得更慢

回答

2

除非系統中有東西需要調用,操作系統通常不包含矢量庫,否則不能使用系統調用或中斷。你可以自己生成所有的代碼,但是你必須在每個使用該特性的目標文件中這樣做,這會很浪費。所以你提供了一個你想讓對象程序調用並安排的東西的運行庫,這樣鏈接器就會搜索它。這是鏈接時間成本,而不是運行時成本。

+0

謝謝。但是C首先如何實現這些功能呢? –

+0

在由編譯器編譯的C代碼中。 – EJP