g 常用標誌位

2021-10-05 09:18:24 字數 2235 閱讀 5617

1)-static

在支援動態鏈結的系統上,這可防止與共享庫鏈結。 在其他系統上,此選項無效

2)-shared

產生乙個共享物件,然後可以將其與其他物件鏈結以形成可執行檔案。 並非所有系統都支援此選項。為了獲得可**的結果,在指定此鏈結器選項時,還必須指定用於編譯的相同選項集(-fpic,-fpic或模型子選項)。

3)-fpic

如果目標機器支援,則發出與位置無關的**,該**適用於動態鏈結並避免對全域性偏移表的大小進行任何限制。 此選項對m68k,powerpc和sparc有所不同。 與位置無關的**需要特殊的支援,因此僅在某些機器上有效。 設定此標誌後,巨集「pic」和「pic」被定義為2

4)-fvisibility=default|internal|hidden|protected:

將預設的elf影象符號可見性設定為指定的選項-除非**中覆蓋了所有符號,否則所有符號均以此標記。使用此功能可以極大地改善共享庫的鏈結和載入時間,生成更優化的**,提供近乎完美的api匯出並防止符號衝突。強烈建議您在分發的所有共享物件中使用此功能。

儘管有命名法,「預設」始終表示公開。即可以從共享物件外部鏈結。在實際使用中,「受保護」和「內部」幾乎沒有用,因此唯一常用的選項是「隱藏」。如果未指定-fvisibility,則預設值為「預設」,即將每個符號設為公開-這會導致與以前版本的gcc相同的行為。

5)-mx32

將"int","long"和指標型別設定為32位,並生成可在任何i386系統上執行的**。

6)-m64

將"int"設定為32位,將"long"和指標型別設定為64位,並為x86-64體系結構生成**。 對於達爾文,僅-m64選項還會關閉-fno-pic和-mdynamic-no-pic選項。

7)-d name

預定義名稱為巨集,定義為1。

8)-d name=definition:

定義的內容被標記和處理,就像它們出現在#define指令的翻譯階段三中一樣。 特別是,該定義將被嵌入的換行符截斷

9)-u name

取消內建的或提供-d選項的名稱的任何先前定義。

10)-undef

不要預定義任何特定於系統或gcc的巨集。 標準的預定義巨集保持定義狀態。

11)-i dir

將目錄dir新增到要搜尋標頭檔案的目錄列表中。

12)-o file

將輸出寫入檔案。

13)-ftemplate-depth=n

模板類的最大例項化深度為n。 模板例項化深度需要乙個限制,以檢測模板類例項化期間的無限遞迴。 符合ansi / iso c ++的程式不得依賴大於17的最大深度(在c ++ 11中更改為1024)。 預設值為900,因為在某些情況下編譯器在達到1024之前可能會耗盡堆疊空間。

14)-wl,option

通過選項作為鏈結器的選項。 如果option包含逗號,則會在逗號處將其拆分為多個選項。 您可以使用此語法將引數傳遞給選項。例如,-wl,-map,output.map將-map output.map傳遞給鏈結器。 使用gnu鏈結器時,您還可以通過-wl,-map = output.map獲得相同的效果。

15)-bprefix

此選項指定在**可以找到編譯器本身的可執行檔案,庫,包含檔案和資料檔案。

16)-pthread

使用pthreads庫增加了對多執行緒的支援。 該選項為預處理器和鏈結器設定標誌。目前gcc 4.5.2中已經沒有了關於 -lpthread的介紹了。所以以後的多執行緒編譯應該用-pthread,而不是-lpthread。

17)-l library

鏈結時搜尋名為library的庫。在命令中寫入此選項的位置會有所不同。鏈結器按照指定的順序搜尋和處理庫和目標檔案。通常,以這種方式找到的檔案是庫檔案-歸檔檔案(lib和.a,其成員是目標檔案)。

18)-ldir

將目錄dir新增到要搜尋-l的目錄列表中

彙編標誌位

of overflow flag 溢位標誌 運算元超出機器能表示的範圍表示溢位,溢位時為1.sf sign flag 符號標誌 記錄運算結果的符號,結果負時為1.zf zero flag 零標誌 運算結果等於0時為1,否則為0.cf carry flag 進製標誌 最高有效位產生進製時為1,否則為0...

標誌位的位運算應用

今天設計新版標誌位,老郭提出了乙個新的方案。以往都是乙個字段設定乙個狀態,tinyint型別,0或者1,但是這樣的壞處是如果乙個資訊表有很多狀態,需要增加很多的字段,空間利用不好,所以他提出用二進位制位運算來解決標示位的問題。設定標示位字段位tinyint型別,也就是最大128,換成二進位制就是有8...

測試標誌位指令

測試某些示志位的情況來設定位元組的指令 這是一大類指令,格式為 setxx reg8 mem8 它的功能是 若條件xx成立,則位元組暫存器reg8或節儲存器單元被設定為1,否則被設定為0.條件xx 見下表 setz sete zf 1 等於零 相等 setnz setne zf 0 不等於零 不相等...