20145234黄斐《信息安全系统设计基础》第二周学习总结
教材學(xué)習(xí)內(nèi)容總結(jié)
vi的基本操作
1.vim 文件名:打開當(dāng)前目錄下相應(yīng)的文件(如果不存在會自動新建)
2.光標(biāo)移動:
h-←,j-↓,k-↑,l-→,方向鍵也可以控制相應(yīng)的光標(biāo)移動方向;w-移動到下一個單詞,b-移動到上一個單詞。
[[ 轉(zhuǎn)到上一個位于第一列的"{";]] 轉(zhuǎn)到下一個位于第一列的"{";{ 轉(zhuǎn)到上一個空行;} 轉(zhuǎn)到下一個空行
3.插入模式:(不同模式之間需要先esc退出后才能切換)
i 在當(dāng)前光標(biāo)處進行編輯
I 在行首插入
A 在行末插入
a 在光標(biāo)后插入編輯
o 在當(dāng)前行后插入一個新行
O 在當(dāng)前行前插入一個新行
cw 替換從光標(biāo)所在位置后到一個單詞結(jié)尾的字符
保存和退出vim:
w 保存文檔
:q! 強制退出,不保存
:q 退出
:wq! 強制保存并退出
:w <文件路徑> 另存為
:saveas 文件路徑 另存為
:x 保存并退出
:wq 保存并退出
4.刪除文本
x 刪除游標(biāo)所在的字符
X 刪除游標(biāo)所在前一個字符
Delete 同x
dd 刪除整行
dw 刪除一個單詞(不適用中文)
d$或D 刪除至行尾
d^ 刪除至行首
dG 刪除到文檔結(jié)尾處
d1G刪至文檔首部
GCC
1.預(yù)處理:
gcc –E hello.c –o hello.i;gcc –E調(diào)用cpp
編 譯:gcc –S hello.i –o hello.s;gcc –S調(diào)用ccl
匯 編:gcc –c hello.s –o hello.o;gcc -c 調(diào)用as
鏈 接:gcc hello.o –o hello ;gcc -o 調(diào)用ld
注意:編譯時要加“-g”參數(shù)(參數(shù)連起來是“ESc”,相應(yīng)輸入的文件的后綴是“iso”)
2.gcc預(yù)處理源文件的時候(第一步),不會進行語法錯誤的檢查,語法檢查會在第二步進行。
3.gcc hello.c -o hello--- 第二個hello為文件名。
4.大致流程:
首先gcc會調(diào)用預(yù)處理程序cpp,由它負(fù)責(zé)展開在源程序中定義的宏.hello.i這是一個經(jīng)過預(yù)處理器處理之后的C源文件——>將hello.i編譯為目標(biāo)代碼,gcc默認(rèn)將.i文件看成是預(yù)處理后的C語言源代碼---->gcc連接器將目標(biāo)文件鏈接為一個可執(zhí)行文件。
GDB
1.啟動gdb的方法有以下幾種:
gdb program也就是執(zhí)行文件,一般在當(dāng)前目錄下。
gdb core 用gdb同時調(diào)試一個運行程序和core文件,core是程序非法執(zhí)行后,core dump后產(chǎn)生的文件。
gdb 如果程序是一個服務(wù)程序,那么可以指定這個服務(wù)程序運行時的進程ID。
2.設(shè)置斷點
(gdb) break func <-------------------- 設(shè)置斷點,在函數(shù)func()入口處。
(gdb) info break <-------------------- 查看斷點信息。
(gdb) r <--------------------- 運行程序,run命令簡寫
(gdb) n <--------------------- 單條語句執(zhí)行,next命令簡寫。
(gdb) c <--------------------- 繼續(xù)運行程序,continue命令簡寫。
(gdb) p I <--------------------- 打印變量i的值,print命令簡寫。
(gdb) bt <--------------------- 查看函數(shù)堆棧。
(gdb) finish <--------------------- 退出函數(shù)。
(gdb) c <--------------------- 繼續(xù)運行。
(gdb) q <--------------------- 退出gdb。
3.其他調(diào)試命令有:
display 跟蹤變量值的改變
until 跳出循環(huán)
finish 跳出函數(shù)
help 幫助
make工程管理器
1.一個Makefile文件主要含有一系列的規(guī)則,每條規(guī)則包含一下內(nèi)容:
一個目標(biāo),即make最終需要創(chuàng)建的文件,如可執(zhí)行文件和目標(biāo)文件;目標(biāo)也可以是要執(zhí)行的動作,如‘clean’;
一個或多個依賴文件的列表,通常是編譯目標(biāo)文件所需要的其他文件。
之后的一系列命令,是make執(zhí)行的動作,通常是把指定的相關(guān)文件編譯成目標(biāo)文件的編譯命令,每個命令占一行,并以tab開頭 執(zhí)行以上Makefile后就會自動化編譯。
2.Makefile還可以定義和使用宏(也稱做變量):
定義宏的格式為:macroname = macrotext
使用宏的格式為:$(macroname)
3.Makefile的一般寫法:
test(目標(biāo)文件): prog.o code.o(依賴文件列表)
tab(至少一個tab的位置) gcc prog.o code.o -o test(命令)
課本知識總結(jié)
第一章
1.信息就是位+上下文,系統(tǒng)中所有信息——包括磁盤文件、存儲器中的程序、存儲器中存放的用戶數(shù)據(jù)以及網(wǎng)上傳送的數(shù)據(jù),都是由一串位表示的,區(qū)分不同數(shù)據(jù)對象的唯一方法是我們讀到這些數(shù)據(jù)對象時的上下文。ASCII字符構(gòu)成的文件是文本文件,所有其他文件都是二進制文件。
2.Hello程序的生命周期從高級C語言程序開始,每條C語句被轉(zhuǎn)化為一系列“低級機器語言”指令,然后這些指令按照“可執(zhí)行目標(biāo)程序”的格式打包,并以二進制磁盤文件的形式存放起來,目標(biāo)程序也稱為“可執(zhí)行目標(biāo)文件”。
3.源文件到目標(biāo)文件的轉(zhuǎn)化由編譯器驅(qū)動程序完成,unix> gcc -o hello hello.c 這里GCC編譯器驅(qū)動程序讀取源文件并把它翻譯成一個可執(zhí)行目標(biāo)文件。翻譯過程分為四個階段:預(yù)處理、編譯、匯編、鏈接,預(yù)處理器、編譯器、匯編器、鏈接器一起構(gòu)成編譯系統(tǒng)。
4.系統(tǒng)的硬件組成:總線、I/O設(shè)備、內(nèi)存、處理器
5.文件就是字節(jié)序列
6.并發(fā):一個同時具有多個活動的系統(tǒng)。并行:用并發(fā)使一個系統(tǒng)運行地更快,并行可以在計算機系統(tǒng)多個抽象層次上運用。按照系統(tǒng)層次結(jié)構(gòu)由高到低的順序強調(diào)三個層次:線程級并發(fā)、指令級并行、單指令多數(shù)據(jù)并行
7.在處理器里,指令集結(jié)構(gòu)提供了對實際處理器硬件的抽象
8.計算機系統(tǒng)是由硬件和系統(tǒng)軟件組成的,程序被其他程序翻譯成不同的形式,開始時是ASCII文本,然后被編譯器和鏈接器翻譯成二進制可執(zhí)行文件
9.處理器讀取并解釋存放在主存里的二進制指令
10.操作系統(tǒng)內(nèi)核是應(yīng)用程序和硬件之間的媒介,提供三個基本的抽象:
-
文件是對I/O設(shè)備的抽象
-
虛擬存儲器是對主存和磁盤的抽象
-
進程是對處理器、主存和I/O設(shè)備的抽象
11.網(wǎng)絡(luò)提供了計算機系統(tǒng)之間通信的手段
第七章
1.靜態(tài)鏈接器主要任務(wù):符號解析、重定位
2.目標(biāo)文件形式:可重定位目標(biāo)文件、可執(zhí)行目標(biāo)文件、共享目標(biāo)文件
3.每個可重定位目標(biāo)模塊m都有一個符號表,它包含m所定義和引用的符號的信息。有三種不同的符號:
- 由m定義并能被其他模塊引用的全局符號
- 由其他模塊定義并被模塊m引用的全局符號
- 只被模塊m定義和引用的本地符號
代碼托管
已上傳
做的過程中忘記截圖了所以圖很少……
轉(zhuǎn)載于:https://www.cnblogs.com/taigenzhenjun/p/5907272.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的20145234黄斐《信息安全系统设计基础》第二周学习总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Spring]IoC容器之进击的注解
- 下一篇: 个人作业-Week2:案例分析