這很難說,
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供大英網(wǎng)站建設(shè)、大英做網(wǎng)站、大英網(wǎng)站設(shè)計、大英網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、大英企業(yè)網(wǎng)站模板建站服務(wù),10年大英做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
CPU的16位、32位以及64位技術(shù),指的是CPU一次性能處理的最大數(shù)據(jù)位。具體的,比較直觀的,主要體現(xiàn)在CPU的主要寄存器的長度上。也就是從8086/8088那時候開始的AX,BX,CX,DX等等。
CPU的寄存器的長度,可以說,它代表了CPU一次性能處理的最大數(shù)值的能力。如果你了解二進(jìn)制,這個就比較好理解:
兩個64位的二進(jìn)制數(shù)如果用32位的CPU做加法,是一件比較麻煩的事情,需要多條指令才能完成。
而對于64位的CPU來說,它計算64位的加法,只要一條指令。
所以,理論上說,64位的CPU的處理能力要強于32位的CPU。
但是,硬件的使用,需要相應(yīng)的軟件配合。如果64位的CPU上運行的是32位的代碼,那么,該CPU的優(yōu)勢并不能發(fā)揮出來。
就如同一個高中生和一個初中生都計算1+1等于幾的問題。
答案都可以算出來,速度都很快。但高中生的強項你是看不到的。
我們目前的操作系統(tǒng),除了LINUX/UNIX外,主要還是32位。
不是說沒有64位的WINDOWS系統(tǒng)。像WINDOWS XP和WINDOWS VISTA都有64位的,但個人感覺用的人比較少。主要是因為64位的操作系統(tǒng),還需要64位的應(yīng)用軟件才能發(fā)揮出64位的優(yōu)勢。
而64位的軟件的產(chǎn)生,目前來說,主要取決編譯系統(tǒng)是否能生成64位代碼。想想看,現(xiàn)在的大學(xué),普遍都還在研究98年的VC6.0等編譯系統(tǒng),所以,64位的應(yīng)用,現(xiàn)在只能說是起步。
以上說的是CPU的常規(guī)寄存器。事實上,CPU的其它某些專用寄存器,都有128位的了。
總的來說,64位CPU是目前的主流,32位在以后的10多年中會逐步淘汰---就如同當(dāng)年的386出生后,16位的逐步淘汰。
1、linux分區(qū)
--在linux里面所有的設(shè)備、任何東西,在linux看來都是文件。
--文件在它看來,有兩種形式:
第一種是字符型(鍵盤輸入、打印機(jī));
第二種是二進(jìn)制型(硬盤、光驅(qū)、U盤)
--linux中所有硬件
--手動分區(qū)
--A、至少有兩個分區(qū)
/ 根分區(qū)
SWAP 交換分區(qū)(物理內(nèi)存大小的兩倍)
--B、個人桌面分區(qū)
/
/boot 128MB is enough
/usr
SWAP
/tmp(用于光盤刻錄)
2、linux目錄說明
--/dev/xxyN
--xx (分區(qū)所在設(shè)備類型:hd--IDE硬盤 sd--SCSI硬盤)
--y (標(biāo)明分區(qū)所在設(shè)備
例如:/dev/hda 第一個IDE硬盤 或 /dev/hdb 第二個IDE硬盤 或 /dev/sdb 第二個SCSI硬盤)
--N (數(shù)字代表分區(qū):1-4--主分區(qū)或擴(kuò)展分區(qū);邏輯分區(qū)從5開始!
例如:/dev/hda3 第一個IDE硬盤上的第三個主分區(qū)或擴(kuò)展分區(qū)
/dev/sdb6 第二個SCSI硬盤上的第二個邏輯分區(qū))
3、linux目錄結(jié)構(gòu)
/ 根目錄,最高級別
/bin 系統(tǒng)基本命令存放目錄(/usr/bin)
/boot linux的內(nèi)核及引導(dǎo)系統(tǒng)程序文件存放目錄(如:vmlinuz、initrd.img)
一般情況下,GRUB或LILO系統(tǒng)引導(dǎo)管理也位于這個目錄
/dev 設(shè)備文件存儲目錄,如聲卡、光驅(qū)...
/ect 存放系統(tǒng)設(shè)置文件(如用戶賬號密碼、服務(wù)器配置文件等)
/home 普通用戶家目錄,默認(rèn)存放目錄
/lib 庫文件存放目錄
/lost+found 在ext2或ext3文件系統(tǒng)中,當(dāng)系統(tǒng)以外崩潰或機(jī)器意外關(guān)機(jī),而產(chǎn)生一些文件碎片放在這里。
當(dāng)系統(tǒng)啟動的過程中,fsck工具會檢查這里,并修復(fù)已經(jīng)損壞的文件系統(tǒng)。
有事喜用發(fā)生問題,有很多的文件被移到這個目錄中,可能會用手工的方式來修復(fù),或者移文件到原來的位置上。
/media 即插即用型存儲設(shè)備的掛載點自動在這個目錄下創(chuàng)建。
如USB盤系統(tǒng)自動掛在后,會在這個目錄下產(chǎn)生一個目錄;
類似cdrom的目錄
/mnt 存放掛載存儲設(shè)備的掛載目錄,如cdrom等目錄
/opt 表示可選的意思,有些軟件包也會被安裝在此,也就是自定義軟件包,
比如OpenOffice,或者一些我們自己編譯的軟件包,也可安裝此處。
/proc 操作系統(tǒng)運行時,進(jìn)程(正在運行的程序)信息及內(nèi)核信息(比如CPU、硬盤分區(qū)、內(nèi)存信息等)存放在此。
/proc目錄是偽裝的文件系統(tǒng)proc的掛載目錄,proc并不是真正的文件系統(tǒng)
/root linux超級權(quán)限用戶root的家目錄
/sbin 大多是涉及系統(tǒng)管理的命令的存放,只有超級權(quán)限用戶root才可執(zhí)行命令存放,普通用戶無權(quán)限執(zhí)行此目錄下的命令
與 /usr/sbin; /usr/X11R6/sbin; usr/local/sbin 目錄相似
(sbin,只有root權(quán)限才能執(zhí)行)
/tmp 臨時文件目錄,有時用戶運行程序的時候,會產(chǎn)生臨時文件。
/var/tmp目錄和此目錄相似
/usr 系統(tǒng)存放程序的目錄,如命令、幫助文件等。這個目錄下有很多的文件和目錄。
大部分Linux發(fā)行版提供的軟件包都安裝在此,涉及服務(wù)器的配置文件就安裝在/ect中。
/usr/share/fonts 字體目錄
/usr/share/man 或 /usr/share/doc 幫助目錄
/usr/bin 或 /usr/local/bin 或 /usr/X11R6/bin 普通用戶可執(zhí)行文件目錄
/usr/sbin 或 /usr/local/sbin 或 /usr/X11R6/sbin 超級權(quán)限用戶root可執(zhí)行命令存放目錄
/usr/include 程序頭文件存放目錄
/var (vary)此目錄經(jīng)常變動
/var/log 用來存放系統(tǒng)日志
/var/www 用來定義Apache服務(wù)器站點存放
/var/lib 用來存放一些庫文件,如MySQL的,以及MySQL數(shù)據(jù)庫的存放地。
4、基本命令
--查看幫助 *** --help *** --?
--查看詳細(xì)幫助 man ***
--登錄 login
--退出窗口 exit
--關(guān)機(jī) shutdown
--重啟 reboot
--初始化 init (run level -/etc/inittab),0-6看第六部分的g
--進(jìn)入根目錄 cd /
--回上層目錄 cd ..
--相對路徑 cd dev
--絕對路徑 cd /dev
--查用戶名 whoami
--查當(dāng)前目錄 pwd
--列出當(dāng)前目錄內(nèi)容 ls
-l(樹詳細(xì)顯示目錄內(nèi)容)
-m(橫列顯示目錄內(nèi)容,是屏幕長度顯示)
-a(列出全部文件,包括隱藏文件)
-S(以文檔大小排序)
--創(chuàng)建目錄 mkdir dname
--刪除目錄 rmdir dname
rm -r *** -(遞歸刪除該目錄下所有內(nèi)容,詢問每個準(zhǔn)備刪除的文件)
rm -rf ***-(強制刪除該目錄下所有內(nèi)容,不詢問)
--創(chuàng)建空白文件 touch ***
(ps:從技術(shù)的角度來講,linux的文件后綴名沒有任何意義)
--復(fù)制 cp
cp -r **1 **2 (復(fù)制1到2中)
--移動 mv
mv -t **1 **2 (把2移動到1中)
--編輯文本 vi [文件名]
--查看文本 cat 由第一行開始顯示文本內(nèi)容
tac 從最后一行顯示,可以看出 tac 是 cat 的倒著寫
more 一頁一頁的顯示文檔內(nèi)容
less 與 more 類似,可以往前翻頁
head 只看頭幾行
-N(數(shù)字,可根據(jù)行數(shù)顯示)
tail 只看后幾行
-N(數(shù)字,可根據(jù)行數(shù)顯示)
nl 顯示的時候,順序輸出行號
od 以二進(jìn)制位的方式讀取檔案內(nèi)容
--查找文本 find [路徑][查找類型][搜索文件名]
如查找rc.local find /etc -name *.local
--查找命令信息及其位置 whereis 命令
如 whereis ls
--查看環(huán)境變量 echo $SHELL
如 echo $PATH (分大小寫:分隔符是:,windows是echo %path%;)
--鏈接 ln
如 ln joe.txt a (硬鏈接,如同復(fù)制一個新文件,joe.txt刪除后,a還存在)
a是鏈接的名稱,a和joe.txt同步,然后a的內(nèi)容和joe.txt一樣
joe.txt改變,a也跟著變
如 ln -s joe.txt b (軟鏈接,如同創(chuàng)建一個快捷方式,joe.txt刪除后,b不存在)
--wc 統(tǒng)計指定文本文件的行數(shù)、字?jǐn)?shù)、字符數(shù)
--grep(很常用) 在指定的文本文件中查找指定的字符串
grep 字符串 文件名
--col 見管道..
--------------------
----信息顯示命令----
--------------------
--date 顯示和設(shè)置日期
--stat 顯示指定文件的相關(guān)信息
--who、w 顯示在線登錄用戶
--whoami 顯示用戶自己的身份
--id 顯示當(dāng)前用戶的id信息
--hostname 顯示主機(jī)名稱
--uname 顯示操作系統(tǒng)信息
--dmesg 顯示系統(tǒng)啟動信息
--du 顯示指定的文件(目錄)已使用的磁盤空間
--df 顯示文件系統(tǒng)磁盤空間的使用情況
--free 顯示當(dāng)前內(nèi)存和交換空間的使用情況
--fdisk -l 顯示磁盤信息
--locale 顯示當(dāng)前語言環(huán)境
5、掛載點(mount 設(shè)備目錄 掛載目錄)
--訪問設(shè)備 (那設(shè)備當(dāng)成一個文件,和另外一個文件夾進(jìn)行綁定)
--例如掛載光驅(qū):步驟 [cd /mnt]---[mkdir cdr]---[mount /dev/cdrom /mnt/cdr]---[cd cdr]--OK!直接訪問光驅(qū)內(nèi)容
--卸載掛載設(shè)備(umount /dev/cdrom)--注意必須先退出掛載目錄,否則出現(xiàn)"device is busy"錯誤.
6、startup-shutdown(linux啟動流程)
--A、boot sequence(important) linux啟動過程
a. load bios(hardware information)
b. read MBR's config to find out the OS
(MBR--Master Boot Record,硬盤第一個物理扇區(qū),柱面0、磁頭0、扇區(qū)1,包含主引導(dǎo)程序和硬盤分區(qū)表)
c. load the kernel of the OS
(加載為kernel核心的OS)
d. init process starts...
(啟動linux第一個進(jìn)程init)
e. execute /etc/rc.d/sysinit
(執(zhí)行系統(tǒng)最重要的配置文件,后臺啟用進(jìn)程)
(rc.d--run command)
f. start other modules(stc/modules.conf)
(開啟各種模塊,如內(nèi)存管理模塊、硬盤管理模塊)
g. execute the run level scripts
(系統(tǒng)啟動是分層次的,根據(jù)情況執(zhí)行,每個層次之間沒關(guān)系)
0 - 系統(tǒng)停機(jī)狀態(tài)
1 - 單用戶工作狀態(tài) root
2 - 多用戶狀態(tài)(沒有NFS)
3 - 多用戶狀態(tài)(有NFS)
NFS - Network File System 網(wǎng)絡(luò)文件系統(tǒng),聯(lián)網(wǎng)系統(tǒng)
4 - 系統(tǒng)未使用,留給用戶
5 - 圖形界面
6 - 系統(tǒng)正常關(guān)閉并重新啟動
如:cd /etc -- 有rc0.d、rc1.d、rc2.d、rc3.d、rc4.d、rc5.d等多個文件夾,保存著各個層次執(zhí)行的進(jìn)程文件
h. execute /etc/rc.d/rc.local (重要)
(保存其它進(jìn)程腳本,如tomcat自動啟動,要修改此配置文件)
i. execute /bin/login
(登錄界面)
j. shell started...
7、vi 文本編輯器
--兩種模式:命令模式 編輯模式
--vi [文件名]
(切換到編輯模式)
a append-光標(biāo)后添加
i insert-光標(biāo)前插入
o open-另起一行編輯
esc (切換回命令模式)
:w 存盤
:wq 存盤退出
:q 退出
:q! 不存盤退出
dd 刪除其中一行
dw 刪除一個單詞
(sudo gedit 文本 常用linux下的文本編輯器,比vi好用)
8、用戶設(shè)置
--切換用戶(switch user) su username
小技巧:直接exit切換
--添加用戶 useradd username [-g] [組名](分配到某個用戶組)
(創(chuàng)建后會自動在/home目錄下創(chuàng)建該新用戶的文件夾,如/home/username)
--設(shè)置密碼 passwd username
--cd /etc
--查看用戶信息 more password
如新增的用戶信息:username:x:500:500::/home/username:/bin/bash
第一個數(shù)字,代表用戶組,當(dāng)添加用戶沒有指定用戶組時,系統(tǒng)會創(chuàng)建一個和用戶ID一樣的組ID;
第二個數(shù)字:用戶ID號;
用戶的目錄是/home/username;
用戶的SHELL是/bin/bash
(命令---SHELL[解釋命令]---kenrel內(nèi)核)
SHELL有多種類型,如csh、bash(常用)、bsh、ksh、sh(最原始)
--添加用戶組 groupadd groupname
--查看用戶組信息 more group
--刪除用戶組 groupdel groupname
--修改用戶 usermod [-g] [組名] [用戶名]
--刪除用戶 userdel username
然后把/home的文件夾刪除了 rm -rf 文件夾
9、權(quán)限file privilege
--linux把文件的權(quán)限分成四種:r:read w:write x:execute -:none
如:-rw-r--r--
lrwxrwxrwx
drwxr-xr-x
drwxr-xr-x
第一個數(shù)字'-'代表文件,其余是文件夾,后9位分為3組,每組有四種權(quán)限設(shè)置rwx-
第一位表示文件所有者
第二位表示和所有者在同一用戶組的用戶
第三位表示不在同一用戶組的用戶權(quán)限
--設(shè)置權(quán)限 (隨意應(yīng)用,靈活組合!)
1、普通用法
--添加權(quán)限 [chmod +x 文件]
如:-rw-r--r-- --- -rwxr-xr-x
--刪除權(quán)限 [chmod -x 文件]
如:-rwxr-xr-x --- -rw-r--r--
--給自己添加權(quán)限 [chmod ?+x 文件]
如此類推,組--g,其他人--o
如:chmod u+x -rw-r--r-- --- -rwxr--r--
chmod g+x -rw-r--r-- --- -rw-r-xr--
chmod o+x -rw-r--r-- --- -rw-r--r-x
2、專業(yè)用法 chmod 755/777
--原理,八進(jìn)制轉(zhuǎn)二進(jìn)制
如755,111 101 101, rwx r-x r-x
777,111 111 111, rwx rwx rwx
--修改所有者權(quán)限 chown (change owner)
如:chown 原來文件 file1 的所有者是 root,改成joe的
chown joe file1
10、管道(把上一個命令執(zhí)行的結(jié)果交給下一個命令)
--使用方法:
命令1|命令2|命令3......|命令n
--使用舉例
--$ls -Rl /etc | more
(如 ls -Rl /etc (在控制臺模式下,無法返回前面過去的信息),因此需要管道執(zhí)行該查詢,實現(xiàn)分頁的工作, ls -Rl /etc | more)
--$cat /etc/passwd | wc
(顯示文件結(jié)果,再數(shù)數(shù)有多少行)
--$cat /etc/passwd | grep lrj
(顯示文件結(jié)果,再查找包含lrj的行)
--#dmesg | grep eth0
(顯示系統(tǒng)啟動的信息,再查找包含eth0的行--真正含義,檢查網(wǎng)卡執(zhí)行信息是否正常)
--$man bash | col -b bash.txt
語法:col [-bfx][-l緩沖區(qū)列數(shù)]
補充說明:在許多UNIX說明文件里,都有RLF控制字符。當(dāng)我們運用shell特殊字符""和"",把說明文件的內(nèi)容輸出成純文本文件時,控制字符會變成亂碼,col指令則能有效濾除這些控制字符。
參數(shù):
-b 過濾掉所有的控制字符,包括RLF和HRLF。
-f 濾除RLF字符,但允許將HRLF字符呈現(xiàn)出來。
-x 以多個空格字符來表示跳格字符。
-l緩沖區(qū)列數(shù) 預(yù)設(shè)的內(nèi)存緩沖區(qū)有128列,您可以自行指定緩沖區(qū)的大小。
--$ls -l | grep "^d"
(用正則表達(dá)式篩選出目錄列表中 頭字母為'd' 的內(nèi)容--目錄)(^是正則表達(dá)式開頭部分)
--$ls -l * | grep "^-" | wc -l
(列出目錄列表中 頭字符為'-'的內(nèi)容--文件,并統(tǒng)計顯示的行數(shù)wc -l)
11、其他命令
--wall(warning all) 通知所有人
a.命令替換
如 wall `date`、 cd 'pwd'、mkbootdisk $(uname -r)
b.重定向
重定向輸出:
如 ls cmd.txt ,把文件寫到cmd.txt,不輸出在控制臺
ls cmd.txt ,把文件追加寫到cmd.txt
重定向輸入:
如 wall cmd.txt,把文本內(nèi)容發(fā)給所有人
12、修改系統(tǒng)的默認(rèn)系統(tǒng)級別
常用3和5
3 - 多用戶狀態(tài)(有NFS)
NFS - Network File System 網(wǎng)絡(luò)文件系統(tǒng),聯(lián)網(wǎng)系統(tǒng)
5 - 圖形界面
PS.設(shè)置用戶權(quán)限: sudo chmod 777 目錄
4表示讀,2表示寫,1表示執(zhí)行.
第一位表示文件所有者,第二位表示和所有者在同一用戶組的用戶,第三位表示不在同一用戶組的用戶權(quán)限.
755表示文件所有者可讀寫,執(zhí)行.
第二位5表示與所有者在同一用戶組的可讀,可執(zhí)行,不可寫.
第三位5表示其它組可讀,可執(zhí)行,不可寫. 轉(zhuǎn)載于Joewalker在本人空間也有詳細(xì)說明
windows -- cmd -- debug -- r 可以看到。
linux 中用gdb應(yīng)該可以看的,具體方式不太清楚,在emacs的gdb-many-windows中就可以看到。
具體參數(shù)及講解如下:
print命令的格式是:
print xxx
p xxx
1. print 操作符
@
是一個和數(shù)組有關(guān)的操作符,在后面會有更詳細(xì)的說明。
::
指定一個在文件或是一個函數(shù)中的變量。
{}
表示一個指向內(nèi)存地址的類型為type的一個對象。
2. 察看內(nèi)容
全局變量(所有文件可見的)
靜態(tài)全局變量(當(dāng)前文件可見的)
局部變量(當(dāng)前Scope可見的)
如果你的局部變量和全局變量發(fā)生沖突(也就是重名),一般情況下是局部變量會隱藏全局變量。如果此時你想查看全局變量的值時,你可以使用“::”操作符:
file::variable
function::variable
eg:
查看文件f2.c中的全局變量x的值:
gdb) p 'f2.c'::x
注:如果你的程序編譯時開啟了優(yōu)化選項,那么在用GDB調(diào)試被優(yōu)化過的程序時,可能會發(fā)生某些變量不能訪問,或是取值錯誤碼的情況。對付這種情況時,需要在編譯程序時關(guān)閉編譯優(yōu)化。GCC,你可以使用“-gstabs” 選項來解決這個問題。
3. 察看數(shù)組
(1)動態(tài)數(shù)組:
p *array@len
array:數(shù)組的首地址,len:數(shù)據(jù)的長度
eg:
(gdb) p *array@len
$1 = {2, 4, 6, 8, 10}
(2)靜態(tài)數(shù)組
可以直接用print數(shù)組名,就可以顯示數(shù)組中所有數(shù)據(jù)的內(nèi)容了。
4. 輸出格式
x 按十六進(jìn)制格式顯示變量。
d 按十進(jìn)制格式顯示變量。
u 按十六進(jìn)制格式顯示無符號整型。
o 按八進(jìn)制格式顯示變量。
t 按二進(jìn)制格式顯示變量。
a 按十六進(jìn)制格式顯示變量。
c 按字符格式顯示變量。
f 按浮點數(shù)格式顯示變量。
eg:
(gdb) p i
$21 = 101
(gdb) p/a i
$22 = 0x65
(gdb) p/c i
$23 = 101 'e'
5. 察看內(nèi)存
使用examine(簡寫x)來查看內(nèi)存地址中的值。語法:
x/
n、f、u是可選的參數(shù)。
(1)n 是一個正整數(shù),表示顯示內(nèi)存的長度,也就是說從當(dāng)前地址向后顯示幾個地址的內(nèi)容。
(2)f 表示顯示的格式,參見上面。如果地址所指的是字符串,那么格式可以是s,如果地十是指令地址,那么格式可以是i。
(3)u 表示從當(dāng)前地址往后請求的字節(jié)數(shù),如果不指定的話,GDB默認(rèn)是4個bytes。u參數(shù)可以用下面的字符來代替,b表示單字節(jié),h表示雙字節(jié),w表示四字 節(jié),g表示八字節(jié)。當(dāng)我們指定了字節(jié)長度后,GDB會從指內(nèi)存定的內(nèi)存地址開始,讀寫指定字節(jié),并把其當(dāng)作一個值取出來。
eg:
x/3uh 0x54320 :從內(nèi)存地址0x54320讀取內(nèi)容,h表示以雙字節(jié)為一個單位,3表示三個單位,u表示按十六進(jìn)制顯示。
6. 察看寄存器
(1)要查看寄存器的值,很簡單,可以使用如下命令:
info registers
(2)查看寄存器的情況。(除了浮點寄存器)
info all-registers
(3)查看所有寄存器的情況。(包括浮點寄存器)
info registers
(4)查看所指定的寄存器的情況。
寄存器中放置了程序運行時的數(shù)據(jù),比如程序當(dāng)前運行的指令地址(ip),程序的當(dāng)前堆棧地址(sp)等等。你同樣可以使用print命令來訪問寄存器的情況,只需要在寄存器名字前加一個$符號就可以了。如:p $eip。
7. display自動顯示的變量
(1)格式:display[/i|s] [expression | addr]
eg:
display/i $pc
$pc是GDB的環(huán)境變量,表示著指令的地址,/i則表示輸出格式為機(jī)器指令碼,也就是匯編。于是當(dāng)程序停下后,就會出現(xiàn)源代碼和機(jī)器指令碼相對應(yīng)的情形,這是一個很有意思的功能。
(2)其他
undisplay
delete display
刪除自動顯示,dnums意為所設(shè)置好了的自動顯式的編號。如果要同時刪除幾個,編號可以用空格分隔,如果要刪除一個范圍內(nèi)的編號,可以用減號表示(如:2-5)
disable display
enable display
disable和enalbe不刪除自動顯示的設(shè)置,而只是讓其失效和恢復(fù)。
info display
查看display設(shè)置的自動顯示的信息。GDB會打出一張表格,向你報告當(dāng)然調(diào)試中設(shè)置了多少個自動顯示設(shè)置,其中包括,設(shè)置的編號,表達(dá)式,是否enable。
8. 設(shè)置
(1)set print address
set print address on
打開地址輸出,當(dāng)程序顯示函數(shù)信息時,GDB會顯出函數(shù)的參數(shù)地址。
(2)set print array
set print array on
打開數(shù)組顯示,打開后當(dāng)數(shù)組顯示時,每個元素占一行,如果不打開的話,每個元素則以逗號分隔。
(3)set print elements
這個選項主要是設(shè)置數(shù)組的,如果你的數(shù)組太大了,那么就可以指定一個來指定數(shù)據(jù)顯示的最大長度,當(dāng)?shù)竭_(dá)這個長度時,GDB就不再往下顯示了。如果設(shè)置為0,則表示不限制。
(4)set print null-stop
如果打開了這個選項,那么當(dāng)顯示字符串時,遇到結(jié)束符則停止顯示。這個選項默認(rèn)為off。
(5)set print pretty on
如果打開printf pretty這個選項,那么當(dāng)GDB顯示結(jié)構(gòu)體時會比較漂亮。如:
$1 = {
next = 0x0,
flags = {
sweet = 1,
sour = 1
},
meat = 0x54 "Pork"
}
(6)set print union
設(shè)置顯示結(jié)構(gòu)體時,是否顯式其內(nèi)的聯(lián)合體數(shù)據(jù)。
(7)set print object
在C++中,如果一個對象指針指向其派生類,如果打開這個選項,GDB會自動按照虛方法調(diào)用的規(guī)則顯示輸出,如果關(guān)閉這個選項的話,GDB就不管虛函數(shù)表了。
在linux下控制硬件和在無操作系統(tǒng)下控制硬件的不同主要在于硬件的地址不一樣,在linux下要使用va(虛擬地址),而在無操作系統(tǒng)下可以直接使用硬件的pa(物理地址)。
在linux-2.6.8.1/include/asm-arm/arch-s3c2410/map.h中定義了大部分硬件的物理地址和他們的虛擬地址。
現(xiàn)以gpio
F為例說明,gpio
的pa
基址(ba)為0x56000000,GPFCON
pa為0x56000050
即:可見偏移量為0x50,而我們在看看GPFCON
va
,vaba
:0xf0e0
0000,va:0xf0e0
0050,偏移量為0x50。我們只要知道了vaba,和他的偏移量,我們就能計算出va,從而,就可以對其進(jìn)行操作了。
如何獲取vaba:在linux-2.6.8.1/include/asm-arm/arch-s3c2410/map.h中有定義。
計算機(jī)中,分級分層的思想隨處可見,這也是計算機(jī)上的一個基本的思想和思路。
在LINUX操作系統(tǒng)中分了三級,三級偏移,一級地址的ba為0xf0000000,偏移到第二級,0xf0e0
0000
(以GPIO為例),再次偏移到第三級,0xf0e0
0050
(以GPFCON為例)。現(xiàn)在,就可以在linux
下通過0xf0e0
0050來對GPFCON
寄存器來進(jìn)行操作了。
源碼中的實現(xiàn)過程如下:
#define
S3C2410_ADDR(x)
(0xF0000000+(x))//map.h
//linux下所有硬件一級地址vaba:0xF0000000
#define
S3C2410_VA_GPIO
S3C2410(0X00E00000)//map.h
//GPIO的偏移量0x00E00000,加上這個偏移量后,到了GPIO器件
#define
S3C2410_GPIOREG(x)
((x)+S3C2410_VA_GPIO)
#define
S3C2410_GPFCON
S3C2410_GPIOREG(0x50)//regs-gpio.h
//GPFCON寄存器的偏移量0x50,加上這個偏移量后,到了具體的寄存器,可以對硬件進(jìn)行操作了
#define
S3C2410_GPFDAT
S3C2410_GPIOREG(0x54)//regs-gpio.h
#define
S3C2410_GPFUP
S3C2410_GPIOREG(0x58)//regs-gpio.h
分享名稱:linux查找命令寄存器 linux查看寄存器的值
當(dāng)前地址:http://www.chinadenli.net/article24/hpgjje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、、電子商務(wù)、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站收錄、網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)