原创 fedora 18編譯 bochs 2.6

昨天剛從Centos換成Fedora 18,yum倉庫裏的bochs不能調試,沒辦法只有自己編譯了。 下載最新的bochs源代碼,安裝了需要的x11和gtk的包之後,編譯完成。 使用的時候會出現Segment Fault。。。。最後發現是

原创 寄存器使用慣例

在給定的時刻只能有一個過程是活動的, 它佔使用CPU的程序寄存器組. 程序寄存器組作爲一個單個資源被所有的函數過程共享.  所以, 我們必須保證: 一個過程(調用者)調用另一個(被調用者)時, 被調用者不會覆蓋某個調用者稍後會使用

原创 log4cplus學習筆記(二)

http://honey-bee.iteye.com/blog/65806

原创 單任務操作系統及其應用程序

這裏我們討論典型的單任務操作系統的基本特性以及在其上運行的應用程序特徵。 概述 典型的單任務系統由以下三個部分組成: 命令行解釋器(Command Line Interpreter,CLI)程序加載器系統服務 命令行解釋器 當操作系統被

原创 c中restrict關鍵字的理解

先看看restrict的用法,很簡單 pointer_type * restrict arg 如(pthread_t * restrict tid) 爲什麼要引入restrict? 簡單來講就是爲了讓編譯

原创 理解 pkg-config 工具

你在 Unix 或 Linux 下開發過軟件嗎?寫完一個程序,編譯運行完全正常,在你本機上工作得好好的,你放到源代碼管理系統中。然後,告訴你的同事說,你可以取下來用了。這時,你長長的出了一口氣,幾天的工作沒有白費,多麼清新的空氣啊,你開

原创 Fedora&Ubuntu編譯vim7.3

   官方源裏的vim版本太低,有些最新的插件不能使用,所以手動編譯一下vim。   下面是Ubuntu中編譯vim的步驟,仿照着在fedora中編譯。    https://github.com/Val

原创 C預處理器#、##、__VA_ARGS__

轉自:http://www.cnblogs.com/zhujudah/admin/EditPosts.aspx?opt=1 1.# 假如希望在字符串中包含宏參數,ANSI C允許這樣作,在類函數宏的替換部分,#符號用作一個預處理運算符

原创 <stdint.h>有關字長與平臺無關的整數類型

在C/C++中,整型的長度跟編譯器相關,編譯器的實現取決於CPU. 比如TC++是DOS16下的應用程序,DOS16是16位的操作系統,所以TC++中sizeof(int)==16;同理win32中sizeof(int)==32.  

原创 多任務系統概念

原理: 嚴格意義上來說,多任務系統在同一時刻執行多個任務是不正確的。事實上,多任務系統只是加載任務到內存,執行它一段時間然後掛起它,並開始執行另一個程序,如果這一切換的時間足夠短,就會造成多個任務同時執行的假象。多任務系統通過在內存中創建

原创 關於A20 Gate

大家都知道,8088/8086只有20位地址線,按理它的尋址空間是2^20,應該是1024KB,但PC機的尋址結構是segment:offset,segment和offset都是16位的寄存器,最大值是0ffffh,換算成物理地址的計算

原创 無符號數加減乘除

無符號數加法 add add指令可以改變Flag Register中的ZF,SF,AF,CF,PF,OF位。 下面是一個計算1-100和的程序 global main extern printf segment .text main:

原创 多任務系統中的主要問題

內存保護 正在執行的任務是不能隨意訪問的,操作系統必須保護掛起任務的內存空間不受正在運行任務的非法更改。 IO端口訪問 在單任務系統中,任務可以隨意的訪問IO端口,但在多任務系統中,由於任務切換,可能會產生許多問題。在任務訪問IO端口