期中总结
linux 基础
几个关键命令
man -k k1 | grep k2 | grep 2
查找包含k1,k2,k3的函数
man 3 printf
查找c语言函数pintf的帮助文档,注意1为linux命令,2为系统调用,3为c语言函数
grep -nr XXX /usr/include
查找include目录下的某个宏的值
cheat XXX
查找某个linux命令的使用方法
VIM常用命令
见vimtutor
GCC命令
gcc -S main.c -o main.s
汇编代码
gcc -c main.c -o main.o
二进制代码
gcc -g main.c -o main
gdb调试
gcc main.c -o main
编译
GDB命令
b 设置断点
info b 显示断点信息
r 运行
n 不进入的单步运行
s 进入的单步运行
continue 持续运行到下一个断点
p 查看变量值
quit 退出
bt 显示所有栈
frame 显示当前栈/栈顶
up 上条栈
down 下条栈
disassemble 显示汇编代码
disassemble /m main 将汇编代码同c代码一同打印
查看当前运行汇编指令:
disassembler $pc
display/i $pc
x/i $pc
执行单指令。
ni;
si:
静态库
gcc -c add.c sub.c mul.c div.c
ar rcvs libmymath.a add.o sub.o mul.o div.o
gcc main.c -o main -L. -lmymath (or gcc main.c ./libmymath.a -o main)
动态库
gcc -fPIC -c add.c sub.c mul.c div.c
gcc -shared -o libmymath.so add.o sub.o mul.o div.o
gcc -o main main.c -L. -lmymath
libmymath.so 要拷贝到/lib or /usr/lib
Makefile
test(目标文件):所需文件名
tab(一个tab的位置) 命令
示例:
程序的机器级表示
寻址方式:见p113
指令:
数据传送指令:见p114
算数类指令:见p119
访问条件码:见p125
跳转指令:见p128
条件传送指令:见p142
信息的表示和处理
1字=2字节=16位
char 字节 1字节
short 字 2字节
int 双字 4字节
long int 双字 4字节
long long int (不支持) 4字节
char * 双字 4字节
float 单精度 4字节
double 双精度 8字节
long double 扩展精度 10/12字节
处理器体系结构
push %ebp <==> subl $4,%esp
movl %ebp,(%esp)
popl %ebp <==> movl (%esp),%ebp
add $4,%esp
leave <==> movl %ebp,%esp
popl %ebp
存储器层次结构
磁盘容量=字节数/扇区*平均扇区数/磁道*磁道数/表面*表面数/盘片*盘片数/磁盘
T avg rotation=1/2 * T max rotation=1/2 * (60/旋转速率) * 1000
T avg transfer=80/旋转速率 * 1/每条磁道的扇区数 * 1000
T access=T avg seek + T avg rotation + T avg transfer
高速缓存
S=2^s
E
B=2^b
m=logM
M=2^m
s=logS
b=log
t=m-(s+b)
C=B*E*S
”“
收获:刚开始学习这门课程时,基础基本为0,许多操作都不懂,实验也只是跟着做,难以明白其中的意思,经过这半个学期的学习,终于算得上入了门,才发现许多知识都是之前学过的,由于过去的基础不牢靠才导致刚开始的学习非常困难。到目前为止,我已初步了解了linux系统的基本操作,懂得如何用vim编写、编译和调试程序,明白了计算机是如何存储信息,明白了机器语言和编程语言的区别和联系,但也只是刚刚入得门罢了,算不上登堂入室。老师说过真正的学习最终靠的还是自己,利用老师教过的知识主动获取更深一层次的内容将是我接下来学习的要点。
gcc main.o add.o sub.o mul.o div.o -o testmymath
main.o: main.c head.h
gcc -c main.c
add.o: add.c head.h
gcc -c add.c
sub.o: sub.c head.h
gcc -c sub.c
mul.o: mul.c head.h
gcc -c mul.c
div.o: div.c head.h
gcc -c div.c