當前位置:首頁 » 編程軟體 » 用gcc編譯16位匯編

用gcc編譯16位匯編

發布時間: 2025-02-06 09:06:07

① 請教C++中編譯64位程序的時候能否使用32位內聯匯編

從x64的設計來說,64-bit模式下是可以使用32-bit指令和大部分16-bit指令的(有一部分16-bit指令的編碼被重用了,所以不能用,還有一部分涉及段操作的也不能用),但是在long mode下運行的32-bit(兼容模式)代碼是不能使用64-bit指令和新寄存器的。
至於編譯器能否使用內嵌匯編,要看設計,cl64就徹底不允許任何嵌入匯編,但是icc、gcc是允許的。

② 要學習匯編語言要用什麼軟體

1,上位機匯編(即PC機匯編);可以採納"燭秋"網友的回答。
2,如果是學習單片機匯編,你可以使用一個很古老的軟體,WAVE匯編軟體。我就是從這個軟體開始學的單片機。

推薦你用Keil,單片機匯編是底層語言,電子專業的起步必經之路(其實也可以跳過),學起來之後,就回到c語言的平台上了,只有各別特殊的地方需要使用匯編。

Keil可以做匯編,及C語言,並且支持很多晶元,被收購之後,現在可以做ARM編程

這兩款軟體都可以從網上找到。順祝學習順利,呵呵

③ 請問為什麼用as,ld在Windows平台編譯16位匯編程序編譯出來的應用程序會無效

as ld是gcc的套件,gcc能不能產生exe格式的目標文件?不能的話nasm替代

④ 我想用gcc編譯一個匯編程序,就是把c語言轉成匯編。

假設你的函數保存在main.c中。
gcc -S main.c -o main.s
-S表示assembly 匯編的意思,也就是生成匯編文件

⑤ 正常編寫的c語言程序編譯器會自動進行針對特定指令集用匯編語言優化嗎

這個要看你使用什麼編譯器了。查看編譯器的幫助文檔,它會告訴你它支持那些指令集,並且做哪些可能的優化。

不同的編譯器,是不一樣的。

補充:GCC 不太清楚,你連VC++的版本都不說。汗,VC6是不支持SSE的,需要安裝VC6SP5。
VS2005 和 VS2008 都支持 SSE。對 SSE/MMX 指令集優化得最好的,還是 Intel 的 c++ 編譯器。

對並行和高性能計算,Fortran 的優勢比較大。特別是 Fortran2003 的新特徵,為並行計算做了很多專門的設定。Intel 也有 Fortran 的編譯器。

⑥ C語言和匯編語言的關系

程序員編寫的C語言代碼,首先要經過C語言編譯器,生成匯編代碼,這個過程稱為編譯階斷,當C語言編譯器生成匯編代碼後,再調用匯編器來將匯編代碼編譯成匯編指令。

這是一種站在巨人肩人的作法,最早的C++編程語言也是這樣的實現方法,只不過那時候叫Cfront程序,Cfront程序的作用是將C++代碼轉換成C語言代碼,類似於一個文本處理器,然後再調用C語言編譯器,將C源碼編譯成匯編代碼,然後再調用匯編器將匯編代碼編譯成機器碼。

這個過程,在Windows平台上不容易操作,但是在Linux平台上很容易看到。以gcc這款c語言編譯器為例,它實際上是四個小程序。
cp: c語言預處理程序,有它負責進行預處理操作。
cc: C語言編譯器,它負責將C源碼編譯成匯編代碼。
as: 匯編器,它負責將匯編代碼編譯成機器碼,一般使用gcc test.c這樣的命令編譯C語言時,會生成一個a.out的程序,它實際上指的就是as ouput,即匯編器輸出文件。
link: 鏈接器,它負責將匯編器輸入的機器碼和庫打包成一個操作系統可以運行的可執行文件,在Linux上的可執行文件格式是ELF格式,這個格式的實現是有鏈接器來完成的。

熱點內容
九九乘法編程 發布:2025-02-06 12:05:05 瀏覽:516
台式機忘記開機密碼怎麼辦 發布:2025-02-06 11:58:01 瀏覽:868
android刷新按鈕 發布:2025-02-06 11:57:17 瀏覽:585
存儲過程有輸入參數和輸出參數 發布:2025-02-06 11:55:32 瀏覽:96
成績評選演算法 發布:2025-02-06 11:42:51 瀏覽:994
資料庫測試數據 發布:2025-02-06 11:31:05 瀏覽:821
球頭軸編程 發布:2025-02-06 11:29:36 瀏覽:280
為什麼安卓系統不能收縮許可權 發布:2025-02-06 11:27:58 瀏覽:730
演算法4視頻 發布:2025-02-06 11:19:20 瀏覽:934
51內置音效卡需要什麼主機配置 發布:2025-02-06 11:18:33 瀏覽:838