• 期中总结


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

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

  • 相关阅读:
    解决js跨域问题
    JS中如何使用Cookie
    js 概念(构造函数)
    js中this的用法
    ORA-00932:类型类型不一致
    记录一次使用 Comparator排序
    Element-ui Message消息提示限制弹出一次
    IDEA启动Tomcat的时候8080端口被占用(MyEclipse类似)
    JAVA中JSONObject对象和Map对象之间的相互转换
    MySQL笔记 【狂神说】
  • 原文地址:https://www.cnblogs.com/huyufeng/p/4927692.html
Copyright © 2020-2023  润新知