期中总结

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的位置) 命令

 

示例:

testmymath: main.o add.o sub.o mul.o div.o 
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
 
 
 

程序的机器级表示

寻址方式:见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编写、编译和调试程序,明白了计算机是如何存储信息,明白了机器语言和编程语言的区别和联系,但也只是刚刚入得门罢了,算不上登堂入室。老师说过真正的学习最终靠的还是自己,利用老师教过的知识主动获取更深一层次的内容将是我接下来学习的要点。

 

不足:懂得的东西都还是太浅显,就如老师所说现在很大部分时间都在填之前埋下的”坑“,”填坑“花费的时间过长,以至于无暇消化最新的知识,很多内容都还停留在表面,知其然而不知其所以然,比如最近所学的存储器层次结构,只知道如何做题,却不知道为何要这么做。接下来要花费更多的时间在”理解“上,理解每一步操作的最深层次的意思,才能算真正的”深入理解计算机系统“。

posted on 2015-11-01 14:53  20135222  阅读(360)  评论(2编辑  收藏  举报

导航