原创 位運算符說明和示例

0. 位運算操作符共有以下幾種: & : 位與,都爲1時,結果爲1;否則爲0。 (例:5 & 3 => 0101 & 0011 = 0001) | : 位或,都爲0時,結果爲0;否則爲1。 (例:5 | 3 => 0101 |

原创 GCC - 無效代碼刪除優化

前言   無效代碼刪除(DCE)是一種廣泛使用的編譯優化技術,它的目的是刪除程序中不會影響程序運行的代碼和變量,減少代碼體積,更好地促使其它相關優化的進行,以提高程序效率,特別是在一些對資源受限的嵌入式設備上,使用無效代碼刪除操作

原创 GCC添加優化選項控制新建的pass

前言   GCC中包含了從-O0到-O3以及-Og,-Os和-Ofast各種級別的優化,並提供了上百多個可獨立控制的優化標誌。每個優化級別都啓用了優化標誌的子集,並在啓用調試信息生成對可執行代碼沒有任何影響。但是確定何時運行pas

原创 數據結構與算法基礎知識整理

目錄 1. 數據結構(8種數據結構) 2. 排序(8種排序) 3. 查找(7種查找) 4. 樹 5. 圖(BFS、DFS、最小生成樹、最短路徑) 一. 數據結構 1.順序表和鏈表 順序表使用數組實現,採用一組地址連續的存儲單元

原创 彙編學習 - 彙編分類和mov、call指令

彙編分類   彙編語言種類大致可以分爲:8086彙編(16bit)、x86彙編(32bit)、x64彙編(64bit)以及嵌入式彙編等。根據書寫格式的不同可將彙編分爲:Intel彙編和AT&T彙編。GCC編譯器中默認使用的是AT&

原创 SourceTree+git結合gitee實現代碼管理

  爲方便代碼託管和協同開發,往往使用到Git,SVN等工具。在Windows和macOS上可使用git配合SourceTree來對Github或Gitee的遠端代碼進行管理。 1.安裝工具 先安裝git,下載地址爲:https

原创 數據結構與算法基礎整理

目錄 1. 數據結構(8種數據結構) 2. 排序(7種排序) 3. 查找(7種查找) 4. 樹 5. 圖(BFS、DFS、最小生成樹、最短路徑) 一. 數據結構 1.順序表和鏈表 順序表使用數組實現,採用一組地址連續的存儲單元

原创 Apache mina使用入門

  Apache mina是一個基於NIO(非阻塞IO)模型的網絡應用框架。詳細資料和下載地址爲:http://mina.apache.org/   遠程客戶端通過IoService建立連接得到session,session將數據

原创 《Effective C++》學習筆記二

目錄 1. 若所有的參數皆需類型轉換,請爲此採用non-member函數 2. 寫一個不拋異常的swap函數 3. 儘可能的延後變量定義出現的時間 4. 儘量少做轉型動作 5. 避免返回handles指向對象內部成分 6. 爲“

原创 SPEC CPU簡介和使用

前言 SPEC CPU是一套行業標準的CPU密集型基準測試套件。SPEC設計了此套件,以使用實際用戶應用程序開發的工作負載,在最廣泛的實際硬件範圍內提供計算密集型性能的比較度量。這些基準作爲源代碼提供,要求用戶習慣使用編譯器命令

原创 《Effective C++》學習筆記一

目錄 1. 將C++看作一個語言聯邦 2. 儘量使用 const,enum,inline 替換 #define) 3. 儘可能使用 const 4. 確定對象使用之前已被初始化 5. 瞭解C++默認編寫並調用哪些函數 6. 若不

原创 如何在64位Linux系統上編譯32位程序

在64位的ubuntu,GCC8.2.0的系統上,如何編譯一個32的程序? 查找GCC文檔可知,編譯64位程序使用-m64選項,例如: gcc -m64 -O3 index.c -o index //該程序只能在64位機器上運

原创 GCC簡單編譯流程

1. gcc編譯流程 gcc將hello.c源文件編譯成可執行的binary文件需要經過hello.i、hello.s、hello.o、hello四個步驟,如圖所示: 1.預處理:展開頭文件和宏定義等。 gcc -E he

原创 編譯優化之 - 結構數據佈局優化入門

前言   結構數據佈局優化(Structure Data Layout Optimizations)是比較成熟也是使用廣泛的編譯器優化技術,旨在提高數據局部性,減少cache miss。常用的structure optimizat

原创 C++ 基礎IO操作

1.基本IO庫文件 C++爲處理不同類型IO操作,分別在iostream中定義了用於讀寫流的基本類型,fstream中定義了讀寫文件的類型,sstream中定義了讀寫string對象的類型。如下所示: iostream: ist