一、Linux基础知识
1.重点需要掌握的命令:
man 命令
man-k 命令
man -k key1| grep key2 | grep key3 | ...
cheat 命令
当你不确定你所运行的命令,尤其是那些使用了许多选项的复杂命令时,你会怎么做?在这种情况下,我们使用man pages来获取帮助。还有一些其它的选择可能包括像‘help’,‘whereis’和‘whatis’这样的命令。但是所有的这些既有优点,也有缺点。
- man pages来查看选项和帮助的时候,里面的描述 实在太冗长了,我们无法在短的时间里理解它的意思 - ‘help’命令可能也不会给你期待的答案。 - ‘whereis’命令几乎不给你任何信息,除了安装二 进制文件的位置(有些时候可能是重要的) - ‘whatis’命令给出一套很严格的答案,它除了说出 查询命令的作用,并没有什么太大帮助。
直到在困难中解决问题前,我们已经使用了以上全部选项,但是现在来了一个交互式的备忘录应用程序‘cheat’,它将在其余的命令中脱颖而出。
其他核心命令
2.vim主要操作
正常模式下一个命令格式:[number] command object
number - 命令执行的次数
command - 要做的事情,比如d代表删除
object - 代表要操作的对象,比如w代表单子、单词,¥代表到行末。
撤销以前的操作:u
3.gcc编译
预处理:gcc –E hello.c –o hello.i;gcc –E调用cpp 编 译:gcc –S hello.i –o hello.s;gcc –S调用ccl 汇 编:gcc –c hello.s –o hello.o;gcc -c 调用as 链 接:gcc hello.o –o hello ;gcc -o 调用ld
4.GDB调试
b)gdb core 用gdb同时调试一个运行程序和core文件,core是程序非法执行后,core dump后产生的文件。
c)gdb 如果程序是一个服务程序,那么可以指定这个服务程序运行时的进程ID。
2.设置断点
(gdb) break func <-------------------- 设置断点,在函数func()入口处。
(gdb) info break <-------------------- 查看断点信息。
(gdb) r <--------------------- 运行程序,run命令简写
(gdb) n <--------------------- 单条语句执行,next命令简写。
(gdb) c <--------------------- 继续运行程序, continue命令简写。
(gdb) p I <--------------------- 打印变量i的值,print命令简写。
(gdb) bt <--------------------- 查看函数堆栈。
(gdb) finish <--------------------- 退出函数。
(gdb) c <--------------------- 继续运行。
(gdb) q <--------------------- 退出gdb。
3.其他调试命令有:
display 跟踪变量值的改变 until 跳出循环 finish 跳出函数 help 帮助
5.Makefile
定义宏的格式为:macroname = macrotext
使用宏的格式为:$(macroname)
1.信息=位+上下文
系统中所有信息都是由一串位表示的,区分不同数据对象唯一方法是读到 这些数据对象时的上下文
2.程序被翻译成不同格式
编译系统预处理器、编译器、汇编器、链接器
1.信息存储
整数运算
浮点数 标准:IEEE标准754
在float中,s、exp和frac字段分别为1位、k = 8 位和n = 23位,得到一个32位的表示;
在double中,s、exp和frac字段分别为1位、k = 11 位和n = 52位,得到一个64位的表示。
机器级编程的两种抽象
(1)指令集结构ISA
是机器级程序的格式和行为,定义了处理器状态、指令的格式,以及每条指令对状态的影响。
(2)机器级程序使用的存储器地址是虚拟地址
看上去是一个非常大的字节数组,实际上是将多个硬件存储器和操作系统软件组合起来。
操作数的三种类型
2.结果存放的两种可能
存储器中 3.寻址方式
(1)立即数寻址方式
格式:$后加用标准c表示法表示的整数,如$0xAFF
如%eax,与汇编中学过的AX寄存器类比。
(3)存储器寻址方式
do-while循环
通用形式:
do body-statement while(test-expr); 循环体body-statement至少执行一次。
可以翻译成:
loop: body-statement t = test-expr; if(t) goto loop; 即先执行循环体语句,再执行判断。
2.while循环
通用形式:
while (test-expr) body-statement GCC的方法是,使用条件分支,表示省略循环体的第一次执行:
if(!test-expr) goto done; do body-statement while(test-expr); done: 接下来:
t = test-expr; if(!t) goto done: loop: body-statement t = test-expr; if(t) goto loop; done: 归根究底,还是要把循环改成do-while的样子,然后用goto翻译。
栈帧结构
栈用来传递参数、存储返回信息、保存寄存器,以及本地存储。
1.栈帧
为单个过程分配的那部分栈称为栈帧,通用结构见149页
所以本质上栈帧还是栈。
2.两个指针
最顶端的栈帧以两个指针界定:
寄存器%ebp-帧指针
寄存器%esp-栈指针
栈指针可移动,所以信息访问多相对于帧指针。
3.调用的过程
课本150页过程P调用过程Q的示例。
调用者的帧应该在被调用者的下面,并且调用者返回地址是它的栈帧末尾,这样可以保证被调用者执行完毕全都出栈后,程序能够继续向下执行。
关于被调用者Q用栈的几个用处:
1.保存不能存放在寄存器中的局部变量。
当要对一个局部变量使用地址操作符&的时候,就必须要为它生成一个地址,所以要入栈。这个用法!以前没见过!
2.存放它调用的其他过程的参数。
1.Y86指令集体系结构
具体使用结合练习
异常 halt指令、非法指令、访问非法地址
2.HCL硬件控制语言
数字系统
组合逻辑、存储器元素、时针信号
表达式
AND:&& OR:|| NOT:!
3.Y86的顺序实现
取指、译码、执行、访存、写回、更新PC
RAM随机访问存储器
SRAM
1.特点: - a.不需要刷新电路即能保存它内部存储的数据。 - b.集成度较低,需要很大的体积。 - c.存取快。 - d.抗干扰。 - 2.应用:一般用来作为计算机中的高速缓冲存储器
DRAM
1.特点: - 1.每个位存储为对电容的充电。 - 2.周期性的用读出然后写回的方式刷新存储器每个位。 2.应用:一般用来作为计算机中的高速缓冲存储器
磁盘存储
DRAM芯片包装在存储器模块中,它是查到主板的扩展槽中。常见的包装包括168个引脚的双列直插存储器模块,它以64位为块传送数据到存储控制器和从存储控制器传出的数据,还包括72个引脚的单列直插存储器模块,它以32位为块传送数据。
存储器层次结构
20135304刘世鹏——信息安全系统设计基础第八周期中总结
原文:http://www.cnblogs.com/L20135304/p/4928889.html