?? gcc中文手冊2.htm
字號:
較慢的機器調取指令,允許其他指令先執行,直到調取指令或浮點運算完成. <BR><BR>-fschedule-insns2
<BR>類似于`-fschedule-insns'選項,但是在寄存器分配完成后,需要一個額外的指令調度過程.對于
寄存器數目相對較少,而且取內存指令大于一個周期的機器,這個選項特別有用. <BR><BR> <BR>目標機選項(TARGET
OPTION)<BR>缺省情況下, GNU CC編譯出本機類型的目標碼.然而也可以把他安裝成交叉編譯器,
為其他機型編譯程序.事實上,針對不同的目標機,可以同時安裝GNU CC相應的配置.然后用`-b'選項指定 目標機種.
<BR><BR>順便提一下,新版本和舊版本的GNU CC可以共存.其中一個版本(可能是最新的那個)為缺省版本,但是有時候你希望使用 其他版本.
<BR><BR><BR>-b machine <BR>參數machine指出編譯的目標機種.這個選項用于安裝為交叉編譯器的GNU CC.
<BR>參數machine的值和配置GNU CC交叉編譯器時設置的機器類型一樣.例如,如果交叉編譯器配置有 `configure
i386v',意思是編譯80386上的System V目標碼,那么你可以通過`-b i386v'運行交叉編譯器.
<BR><BR>如果沒有指定`-b'選項,通常指編譯本機目標碼. <BR><BR><BR>-V version
<BR>參數version指出運行哪個版本的GNU CC.這個選項用于安裝了多個版本的GCC.例如,如果
version是`2.0',意味著運行GNU CC 2.0版. <BR>如果沒有指定`-V'選項,缺省版本取決于GNU
CC的安裝方式,一般說來推薦使用通用版本. <BR><BR><BR><BR> <BR>機器相關選項(MACHINE
DEPENDENT OPTION)<BR>每一種目標機型都有自己的特別選項,這些選項用`-m '開關引導,選擇不同的硬件型號或配置---例如,
68010還是68020,有沒有浮點協處理器.通過指定選項,安裝 編譯器的一個版本能夠為所有的型號或配置進行編譯.
<BR><BR>此外,編譯器的某些配置支持附加的特殊選項,通常是為了在命令行上兼容這個平臺的其他編譯器.
<BR><BR><BR>下面是針對68000系列定義的`-m'選項: <BR><BR>-m68000 <BR>-mc68000
<BR>輸出68000的目標碼.如果編譯器按基于68000的系統配置,這個選項就是缺省選項. <BR><BR>-m68020
<BR>-mc68020 <BR>輸出68020的目標碼(而不是68000).如果編譯器按基于68020的系統配置,這個選項就是缺省選項.
<BR><BR>-m68881 <BR>輸出包含68881浮點指令的目標碼.對于大多數基于68020的系統這是缺省選項,除非設置編譯器時指定了
-nfp . <BR><BR>-m68030 <BR>輸出68030的目標碼.如果編譯器按基于68030的系統配置,這個選項就是缺省選項.
<BR><BR>-m68040 <BR>輸出68040的目標碼.如果編譯器按基于68040的系統配置,這個選項就是缺省選項.
<BR><BR>-m68020-40
<BR>輸出68040的目標碼,但是不使用新指令.生成的代碼可以在68020/68881上,也可以在68030或 68040上較有效地運行.
<BR><BR>-mfpa <BR>輸出包含SUN FPA浮點指令的目標碼. <BR><BR>-msoft-float
<BR>輸出包含浮點庫調用的目標碼. 警告:所需的庫不是GNU CC的組成部分.一般說來GCC使用該機型本地C
編譯器的相應部件,但是作交叉編譯時卻不能直接使用.你必須自己管理提供合適的函數庫用于交叉編譯. <BR><BR>-mshort
<BR>認為int類型是16位寬,相當于short int. <BR><BR>-mnobitfield
<BR>不使用位域(bit-field)指令. `-m68000'隱含指定了`-mnobitfield'. <BR><BR>-mbitfield
<BR>使用位域指令. `-m68020'隱含指定了`-mbitfield'.如果你使用未改裝的gcc,這就是 默認選項.
<BR><BR>-mrtd <BR>采用另一種函數調用約定,函數接受固定數目的參數,用rtd指令返回,該指令返回時彈出棧內的參數.這個
方法能夠使調用者節省一條指令,因為他這里不需要彈出參數.
<BR>這種調用約定不兼容UNIX的正常調用.因此如果你需要調用UNIX編譯器編譯的庫函數,你就不能使用這個選項.
<BR><BR>此外,所有參數數量可變地函數必須提供函數原型(包括printf);否則編譯器會生成錯誤的調用代碼.
<BR><BR>另外,如果調用函數時攜帶了過多的參數,編譯器將生成嚴重錯誤的代碼. (正常情況下,多余的參數被安全無害的忽略.)
<BR><BR>68010和68020處理器支持rtd指令,但是68000不支持. <BR><BR><BR>下面是針對VAX定義的`-m'選項:
<BR><BR><BR>-munix <BR>禁止輸出某些跳轉指令(aobleq等等), VAX的UNIX匯編器無法跨越長范圍(long
ranges) 進行處理. <BR><BR>-mgnu <BR>如果使用GNU匯編器,則輸出那些跳轉指令, <BR><BR>-mg
<BR>輸出g-format浮點數,取代d-format. <BR><BR>下面是SPARC支持的`-m'選項開關:
<BR><BR><BR>-mfpu <BR><BR>-mhard-float <BR>輸出包含浮點指令的目標碼.這是缺省選項.
<BR><BR>-mno-fpu <BR><BR>-msoft-float <BR>輸出包含浮點庫調用的目標碼.
警告:沒有為SPARC提供GNU浮點庫.一般說來使用該機型本地C編譯器
的相應部件,但是不能直接用于交叉編譯.你必須自己安排,提供用于交叉編譯的庫函數.
<BR>-msoft-float改變了輸出文件中的調用約定;因此只有用這個選項編譯整個程序才有意義.
<BR><BR><BR>-mno-epilogue <BR><BR>-mepilogue <BR>使用-mepilogue
(缺省)選項時,編譯器總是把函數的退出代碼放在函數的尾部.任何在函數中間 的退出語句(例如C中的return語句)將產生出跳轉指令指向函數尾部.
<BR>使用-mno-epilogue選項時,編譯器盡量在每個函數退出點嵌入退出代碼. <BR><BR><BR>-mno-v8
<BR><BR>-mv8 <BR>-msparclite <BR>這三個選項選擇不同種類的SPARC系統.
<BR>默認情況下(除非特別為Fujitsu SPARClite配置), GCC生成SPARC v7目標碼. <BR><BR>-mv8生成SPARC
v8目標碼.他和v7目標碼唯一的區別是,編譯器生成整數乘法和整數除法指令, SPARC v8支持該指令,而v7體系不支持.
<BR><BR>-msparclite生成SPARClite目標碼.增加了SPARClite支持的整數乘法,整數除法單步掃描 (integer
divide step and scan (ffs))指令. v7體系不支持這些指令. <BR><BR><BR>-mcypress
<BR><BR>-msupersparc <BR>這兩個選項選擇處理器型號,針對處理器進行代碼優化.
<BR>-mcypress選項(默認項)使編譯器對Cypress CY7C602芯片優化代碼, SparcStation/SparcServer
3xx系列使用這種芯片.該選項也適用于老式的SparcStation 1, 2, IPX 等機型..
<BR><BR>-msupersparc選項使編譯器對SuperSparc處理器優化代碼, SparcStation 10, 1000
和2000系列使用這種芯片.同時該選項啟用完整的SPARC v8指令集. <BR><BR><BR>下面是針對Convex定義的`-m'選項:
<BR><BR><BR>-mc1 <BR>輸出C1的目標碼.當編譯器對C1配置時,這是默認選項. <BR>-mc2
<BR>輸出C2的目標碼.當編譯器對C2配置時,這是默認選項. <BR>-margcount
<BR>在每個參數列表的前面放置一個參數計數字(argument count word).某些不可移植的Convex和Vax
程序需要這個參數計數字. (調試器不需要他,除非函數帶有變長參數列表;這個信息存放在符號表中.) <BR><BR>-mnoargcount
<BR>忽略參數計數字.如果你使用未改裝的gcc,這是默認選項. <BR><BR>下面是針對AMD Am29000定義的`-m'選項:
<BR><BR>-mdw <BR>生成的目標碼認為DW置位,就是說,字節和半字操作由硬件直接支持.該選項是默認選項. <BR>-mnodw
<BR>生成的目標碼認為DW沒有置位. <BR>-mbw <BR>生成的目標碼認為系統支持字節和半字寫操作.該選項是默認選項. <BR>-mnbw
<BR>生成的目標碼認為系統不支持字節和半字寫操作.該選項隱含開啟了`-mnodw'選項. <BR>-msmall
<BR>使用小內存模式,小內存模式假設所有函數的地址位于某個256 KB段內,或者所有函數的絕對地址小于256K.這樣
就可以用call指令代替const, consth, calli指令序列. <BR>-mlarge <BR>假設不能使用call指令;這是默認選項.
<BR>-m29050 <BR>輸出Am29050的目標碼. <BR>-m29000 <BR>輸出Am29000的目標碼.這是默認選項.
<BR>-mkernel-registers <BR>生成的目標碼引用gr64-gr95寄存器而不是gr96-gr127寄存器.該選項可以用于編譯
內核代碼,內核需要一組全局寄存器,這些全局寄存器和用戶模式使用的寄存器完全無關. <BR>注意,使用這個選項時,
`-f'選項中的寄存器名字必須是normal, user-mode, names. <BR><BR><BR>-muser-registers
<BR>使用普通全局寄存器集gr96-gr127.這是默認選項. <BR>-mstack-check
<BR>在每次堆棧調整后插入一條__msp_check調用.這個選項常用于內核代碼. <BR><BR>下面是針對Motorola
88K體系定義的`-m'選項: <BR><BR>-m88000 <BR>生成的目標碼可以在m88100和m88110上正常工作.
<BR>-m88100 <BR>生成的目標碼在m88100上工作的最好,但也可以在m88110上運行. <BR>-m88110
<BR>生成的目標碼在m88110上工作的最好,可能不能在m88100上運行. <BR>-midentify-revision
<BR>在匯編器的輸出端包含一條ident指令,記錄源文件名,編譯器名字和版本,時標,以及使用的編譯選項, <BR>-mno-underscores
<BR>在匯編器的輸出端,符號名字前面不添加下劃線.默認情況是在每個名字前面增加下劃線前綴.
<BR>-mno-check-zero-division <BR>-mcheck-zero-division
<BR>早期型號的88K系統在除零操作上存在問題,特定情況下許多機器無法自陷.使用這些選項可以避免包含(或可以
顯明包含)附加的代碼,這些代碼能夠檢查除零錯,發送例外信號. GCC所有88K的配置默認使用 `-mcheck-zero-division'選項.
<BR>-mocs-debug-info <BR>-mno-ocs-debug-info
<BR>包含(或忽略)附加的調試信息(關于每個棧架結構中寄存器的使用), 88Open Object Compatibility Standard,
``OCS'',對此信息做了說明. GDB不需要這些額外信息. DG/UX, SVr4,和Delta 88
SVr3.2的默認配置是包含調試信息,其他88k機型的默認配置是忽略這個信息. <BR>-mocs-frame-position
<BR>-mno-ocs-frame-position <BR>強制(或不要求)把寄存器值存儲到棧架結構中的指定位置(按OCS的說明).
DG/UX, Delta88 SVr3.2和 BCS的默認配置使用`-mocs-frame-position'選項;其他88k機型的默認配置是
`-mno-ocs-frame-position'. <BR>-moptimize-arg-area
<BR>-mno-optimize-arg-area <BR>控制如何在堆棧結構中存儲函數參數.
`-moptimize-arg-area'節省空間,但是有可能宕掉某些 調試器(不是GDB).
`-mno-optimize-arg-area'證實比標準選項好.默認情況下GCC不優化參數域. <BR><BR>-mshort-data-
<BR>num通過和r0關聯,產生較小的數據引用(data reference),這樣就可以用單指令調入
一個數值(而不是平常的雙指令).用戶通過選項中的num控制改變哪種數據引用.例如,如果你指定了
`-mshort-data-512',那么受影響的數據引用是小于512字節的數據移動. -mshort-data-num選項對大于64K的num
無效. <BR><BR>-mserialize-volatile <BR><BR>-mno-serialize-volatile
<BR>產生,或不產生代碼來保證對易變內存訪問的結果一致. <BR>對于常用的處理器子型號, GNU
CC始終默認保證這種一致性.如何實現結果一致取決于處理器子型號.
<BR><BR>m88100處理器不對內存引用重新安排,因此訪問結果始終一致.如果使用了`-m88100'選項, GNU CC
不產生任何針對結果一致的特別指令.
<BR><BR>m88110處理器的內存引用順序并不始終符合指令請求的引用順序.特別是某條讀取指令可能在先前的存儲指令之前執行.
多處理器環境下,亂序訪問擾亂了易變內存訪問的結果一致.因此當使用`-m88000'或`-m88110' 選項時, GNU
CC在適當的時候產生特別的指令迫使執行順序正確.
<BR><BR>這些用于保證一致性的額外代碼有可能影響程序的性能.如果你確認能夠安全地放棄這種保證,你可以使用
`-mno-serialize-volatile'選項.
<BR><BR>如果你使用`-m88100'選項,但是需要在m88110處理器上運行時的結果一致,你應該加上
`-mserialize-volatile'選項. </P>
<DIV
style="FONT-SIZE: 12px; WIDTH: 100%; FONT-FAMILY: Courier 宋體; TEXT-ALIGN: center"><A
href="http://21ic.com/news/n5203c79.aspx">上一頁</A> <A
href="http://21ic.com/news/n5203c79.aspx">[1]</A> <SPAN
class=gray>[2]</SPAN> <A
href="http://21ic.com/news/n5203c79p3.aspx">[3]</A> <A
href="http://21ic.com/news/n5203c79p3.aspx">下一頁</A> </DIV>
<SCRIPT event=onload for=window type=text/javascript>ImgLoad(document.getElementById("BodyLabel"));</SCRIPT>
</DIV><BR><BR>
<TABLE id=dlPages style="WIDTH: 95%; BORDER-COLLAPSE: collapse"
cellSpacing=0 align=center border=0>
<TBODY>
<TR>
<TD style="HEIGHT: 20px" colSpan=2>【內容導航】 </TD></TR>
<TR>
<TD style="WIDTH: 50%; HEIGHT: 20px">第1頁:<A
href="http://21ic.com/news/n5203c79.aspx">GCC 中文手冊</A> </TD>
<TD style="WIDTH: 50%; HEIGHT: 20px">第2頁:<A class=highlight
href="http://21ic.com/news/n5203c79p2.aspx">GCC 中文手冊(中)</A> </TD></TR>
<TR>
<TD style="WIDTH: 50%; HEIGHT: 20px">第3頁:<A
href="http://21ic.com/news/n5203c79p3.aspx">GCC 中文手冊(下)</A>
</TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="97%">
<TBODY>
<TR>
<TD align=right>
<TABLE>
<TBODY>
<TR>
<TD>閱讀:<SPAN id=HitsLabel>199</SPAN> 次<BR>錄入:<SPAN
id=MemberNameLabel><A
href="http://21ic.com/news/memberProfile.aspx?id=10"
target=_blank>錄入員001</A></SPAN><BR><BR></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD align=right>【 <A href="http://21ic.com/news/remark.aspx?ID=5203"
target=_blank>評論</A> 】 【 <A
href="http://21ic.com/news/mail.aspx?ID=5203" target=_blank>推薦</A> 】
</TD></TR></TBODY></TABLE></TD>
<TD class=mr></TD></TR></TBODY></TABLE></DIV></DIV>
<DIV class=mframe>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD class=tl></TD>
<TD class=tm><A style="CURSOR: hand"
href="http://21ic.com/news/search.aspx?Where=Nkey&Keyword=GCC"><SPAN
class=tt>相關資料 連接</SPAN></A> </TD>
<TD class=tr></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -