360doc--壞壞的文章 http://www.ahfyzs.com/rssperson/14894.aspx 360doc (http://www.ahfyzs.com) zh-cn 360doc--個人圖書館 linux2.6內(nèi)核編譯方法詳述 http://www.ahfyzs.com/content/06/1209/10/14894_287760.shtml 2006/12/9 10:42:26
linux2.6內(nèi)核成功編譯。(2)在SOURCIES中含有2個文件module-init-tools.tar.gz modutils-2.4.21.tar.gz 將module-init-tools.tar.gz接壓 //tar -xzvf module-init-tools.tar.gz // modutils-2.4.21.tar.gz文件不是主要要用的,不用接壓。(3)module-init-tools.tar.gz文件接壓后會有一個 module-init-tools-3.0-pre1.
深入理解Linux的系統(tǒng)調(diào)用 http://www.ahfyzs.com/content/06/1209/10/14894_287734.shtml 2006/12/9 10:10:52
一、 什么是系統(tǒng)調(diào)用    在Linux的世界里,我們經(jīng)常會遇到系統(tǒng)調(diào)用這一術(shù)語,所謂系統(tǒng)調(diào)用,就是內(nèi)核提供的、功能十分強大的一系列的函數(shù)。#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, type5,arg5) 六個參數(shù)的。#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, type5,arg5,type6,arg6) _res);4. 進行中斷處理,根據(jù)系統(tǒng)調(diào)用表調(diào)用內(nèi)核函數(shù)。
80386ASM程序設(shè)計基礎(chǔ)(十一) http://www.ahfyzs.com/content/06/1209/09/14894_287718.shtml 2006/12/9 9:47:05
中斷描述符表和全局描述符表一樣,長度為48位。定義全局描述符表DUMMY DESCRIPTOR<>;空描述符,它有特定義的含義,空描述符可以保證GDT中的第1個描述符永遠不會被訪問CODE DESCRIPTOR<0FFFFH,,,SAttr,>;代碼段的描述符CODE_SEL=CODE-GDT;代碼段描述符的選擇子DATAS DESCRIPTOR<0FFFFH,0H,82H,DAttr,>;源數(shù)據(jù)段描述符,即820000HDATAS_SEL=DATAS-GDT;源數(shù)據(jù)段選擇子GDTLEN=$-GDTVGDTR DESCRIPTOR<GDTLEN-1,>data ends.
80386ASM程序設(shè)計基礎(chǔ)(十) http://www.ahfyzs.com/content/06/1209/09/14894_287717.shtml 2006/12/9 9:46:33
一個任務(wù)的整個虛擬地址空間可以分為相等的兩半,一半空間的描述符在全局描述符表GDT中,一半空的描述符在局部描述符表LDT中。由于全局描述符表和局部描述符表都可以包含最多為8192個描述符,而每個描述符所描述的段的最大長度為4G,因此最大的虛擬地址空間為:8192*4G*2=64TB。標(biāo)記TI指示是從全局描述符中讀取描述符還是從局部描述符表中讀取描述符。TI=0指示是從全局描述符表中讀取描述符,TI=1指示從局部描述符表讀取描述符。
80386ASM程序設(shè)計基礎(chǔ)(九) http://www.ahfyzs.com/content/06/1209/09/14894_287716.shtml 2006/12/9 9:46:04
同時,由于每個任務(wù)都有自已的虛擬地址空間,為了防止多個并行任務(wù)將虛擬地址空間映射同一物理地址空間采用線性地址空間隔離虛擬地址和物理地址,線性地址空間由一維的線性地址構(gòu)成,線性地址空間與物理地址空間對等,線性地址為32位,可尋址空間為4GB(物理地址空間最大也可以達到4GB,址址為32位,所以說線性地址空間與物理地址空間對等)。
80386ASM程序設(shè)計基礎(chǔ)(八) http://www.ahfyzs.com/content/06/1209/09/14894_287715.shtml 2006/12/9 9:45:39
在標(biāo)號dec2中,逐個彈出在標(biāo)號dec1中得到的余數(shù),然后分別將它們顯示出來,這樣就可以將該存儲單元中的內(nèi)容用十進數(shù)表示,下面解釋每一條指令的功能: a1.pushad;將8個32位通用寄存器全部入棧 a2.xor cx,cx;cx清0 a3.mov ebx,10;10=>ebx a4.xor edx,edx;edx清0 a5.div ebx;edx存放高32位,不過是0,EAX中存放低32位,即ffff:[1234]雙字的內(nèi)容;
80386ASM程序設(shè)計基礎(chǔ)(七) http://www.ahfyzs.com/content/06/1209/09/14894_287714.shtml 2006/12/9 9:45:07
CF=0,EAX保持不變 BTC EAX,8;CF=0,EAX=12345778H BTR EAX,8;CF=0,EAX=12345678H BTS EAX,8;CF=0,EAX=12345778H BSF AX,BX;AX=0 BSR AX,BX;AX=15.CF=1,[BB]的內(nèi)容保持不變 BTC DWORD PTR [BB],12;CF=1,[BB]=76779999H BTR DWORD PTR [BB],12;CF=1,[BB]=76779999H BTS DWORD PTR [BB],12;CF=1,[BB]=77779999H BSF DWORD PTR [BB],12;[BB]=0 BSR DWORD PTR [BB],12;[BB]=31(十進制)
80386ASM程序設(shè)計基礎(chǔ)(六) http://www.ahfyzs.com/content/06/1209/09/14894_287712.shtml 2006/12/9 9:44:30
80386ASM程序設(shè)計基礎(chǔ)(五) http://www.ahfyzs.com/content/06/1209/09/14894_287711.shtml 2006/12/9 9:44:09
控制轉(zhuǎn)移指令,串操作指令 80386控制轉(zhuǎn)移指令包括:轉(zhuǎn)移指令,循環(huán)指令,過程調(diào)用和返回指令。因此,這里的OPRD一定是存儲單元,高16位是CS的值,低16位是IP值,詳細的實現(xiàn)過程: SP-2=>SP;將堆棧指針減2 (SP)<=CS;將CS入棧 SP-2=>SP;將堆棧指針再減2 (SP)<=IP;將IP入棧 ;裝入新的CS,IP IP<=(OPRD+2,OPRD+3) CS<=(OPRD,OPRD1) e.段內(nèi)返回 格式:RET。
80386ASM程序設(shè)計基礎(chǔ)(四) http://www.ahfyzs.com/content/06/1209/09/14894_287710.shtml 2006/12/9 9:43:46
算術(shù)運算指令,邏輯運算指令,移位指令 AA.算術(shù)運算指令 A.加減法運算ADD,ADC,INC,SUB,SBB,DEC,CMP,NEG a.ADD,和8086功能,用法相同,不過支持32位操作,下面的語句都是合法的。SHRD將源操作數(shù)OPRD1移M位,空出的位用OPRD2低端M位來填補,源操作數(shù)OPRD2保持不變,最后移出的位放在CF中,對于這兩條指令,當(dāng)移位位數(shù)僅為1的話,移出和移后的符號位不變的話,那么OF=0,如果符號位不一樣的話,那OF=1。
80386ASM程序設(shè)計基礎(chǔ)(三) http://www.ahfyzs.com/content/06/1209/09/14894_287709.shtml 2006/12/9 9:43:22
80386的指令集包含了8086/8088,80186,80286的指令集,可以分為幾個大類:數(shù)據(jù)傳送指令,算術(shù)運算/邏輯運算指令,移位指令,控制轉(zhuǎn)移指令,串操作指令,高級語言支持的指令,條件字節(jié)設(shè)置指令,位操作指令,處理器控制指令和保護方式指令。PUSHAD,將8個32位通用寄存器全部入棧,入棧順序EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI,ESP的內(nèi)容是執(zhí)行指令PUSHAD之前的內(nèi)容 j.POPAD,8個32位通寄存器全部出棧,ESP的內(nèi)容參見h.
80386ASM程序設(shè)計基礎(chǔ)(二) http://www.ahfyzs.com/content/06/1209/09/14894_287707.shtml 2006/12/9 9:41:59
不過有一點要注意的是在基址變址寄存器尋址方式或相對基址變址尋址方式中,段寄存器由基址寄存器來確定,而不是由變址寄存器來確定,同時除ESP外其它的7個通用寄存器都可以作為變址寄存器,用代碼來表示就是: MOV EAX,[EBP+ESP+2];這條指令是錯誤的,因為不可以用ESP作為變址寄存器 MOV EAX,[EBP+ESI+10H];這里的段寄存器應(yīng)該有基址寄存器來決定。
80386ASM程序設(shè)計基礎(chǔ)(一) http://www.ahfyzs.com/content/06/1209/09/14894_287704.shtml 2006/12/9 9:39:17
1.80386的的寄存器: 80386的寄存器可以分為8組:通用寄存器,段寄存器,指令指針寄存器,標(biāo)志寄存器,系統(tǒng)地址寄存器,控制寄存器,調(diào)試寄存器,測試寄存器,它們的寬度都是32位的??刂萍拇嫫?,系統(tǒng)地址的寄存器,調(diào)試寄存器,測試寄存器將在介紹完80386分段,分頁管理機制后介紹,請繼續(xù)關(guān)注第二篇"80386存儲器的尋址方式"。
什么是現(xiàn)場總線 http://www.ahfyzs.com/content/06/1126/17/14894_273130.shtml 2006/11/26 17:12:18
CanBus總線是中國目前應(yīng)用較廣的一種現(xiàn)場總線,在Can總線的基礎(chǔ)上擴展有兩種重要總線:DeviceNet和CanOpen。Type1 TS61158 現(xiàn)場總線、Type2 ControlNet 和 Ethernet/IP 現(xiàn)場總線、Type3 Profibus現(xiàn)場總線、Type4 P-NET現(xiàn)場總線、Type5 FF HSE現(xiàn)場總線、Type6 Swift-Net 現(xiàn)場總線、Type7 WorldFIP現(xiàn)場總線、Type8 INTERBUS現(xiàn)場總線、Type9 FF H1現(xiàn)場總線以及Type10 PROFInet現(xiàn)場總線,該標(biāo)準(zhǔn)于2003年4月成為正式國際標(biāo)準(zhǔn)。
RTAI簡介8 http://www.ahfyzs.com/content/06/1126/16/14894_273046.shtml 2006/11/26 16:05:26
接 著,進程讓它自己進程安排策略和優(yōu)先級并相應(yīng)linux的調(diào)度。Linux調(diào)度缺省規(guī)則為SCHED_OTHER,它是linux通常使用的分時處理策 略。SCHED_FIFO在進程調(diào)度的方式上取得更高水平的控制。SCHED_FIFO用比0大的靜態(tài)優(yōu)先級(在這種情況下,最大允許99)。使用這測略使得進程可以搶占其他用SCHED_OTHER,或更低的優(yōu)先級的進程。if( sched_setscheduler( 0, SCHED_FIFO, &mysched ) == -1 ) {到此,進程打開實時FIFO’/dev/rtf0’。