我試着去學習彙編,首先我使用NASM的編譯名稱,但後來我明白,我可以在GCC使用.S文件。這讓我非常感興趣,因爲我的目標是能夠爲自定義語言編寫一個編譯器,所以這非常有趣,因爲它允許我使用c代碼進行鏈接和編譯。如此充滿激情,我開始用gcc編譯c程序集(.s文件),並對它進行了examen。正如我這樣做,它接縫的結構與NASM組裝不同,只有主標籤,f.eks,而不是_start和其他奇怪的結構,並且我不是在談論Intel-與AT語法。所以後來我的問題如下:什麼是結構FO gcc的彙編輸出
它是一個不同的結構,在正常的組裝和在GCC的.s文件中,或者只是我沒有裝配足夠好的knowlage?如果它是不同的結構,它是否有名字?
我一直在想我的方式谷歌這幾個小時,但是當我搜索GCC彙編,和其他的東西我能想到的,我只得到ç內聯彙編...
請幫幫忙,IM因爲沒有弄清楚這一點而變得瘋狂。
除非你使用GCC的'-nostartfiles'選項有發生,因爲該入口點是在_C_啓動運行時代碼沒有'_start'標籤(未在輸出'.s'文件所示)。這種情況下的入口點是'main'和'main'符合CDECL調用約定。 –
您可能正在尋找'as':http://sourceware.org/binutils/docs/as/順便說一下,我認爲如果您打算編寫LLVM IL而不是彙編語言,你自己的編譯器。 – tkausl
即使在NASM中,您也可以編寫符合您的目標平臺ABI的編譯函數,然後您可以將它與C/C++代碼連接在一起,這實際上是如何在應用程序中使用匯編的合理方式之一, ASM中很少有關鍵的小部分,並且大部分都保存在C++中。對於.s文件沒有任何額外的魔力,使它們以某種方式更加可用於鏈接,您可以遵循相同的規則,並在NASM中定義全局標籤。然後可以使用gcc進行鏈接,因爲它會默認添加C運行庫lib(爲您節省一些鏈接器配置的工作)。 – Ped7g