zoukankan      html  css  js  c++  java
  • 嵌入式培训学习历程第二十天

      1.段错误原因  : 访问了不存在的空间,  有空间但是么有权限

      2.static : 在内存上开辟空间

      3.objdump -dS  a.out : 反汇编命令

      4. gdb 中可以使用disassemble反汇编当前函数

        注意 : 小权限转到大权限会出警告

      5.p $esp : 打印esp的值。。

      6.函数调用和返回过程的规则

          (1). 参数压栈传递, 并且是从右向左依次压栈

           (2). ebp总是指向当前栈帧的栈低

           (3). 返回值通过eax寄存器传递

      7. c语言的预处理器  cpp

      8. _start 调用main函数 (_start 是汇编中的)

      9.  main.c -E main.i (预处理)

         main.i -S main.s(编译)

         main.s -o main.o(汇编)

         main.o  a.out (链接)

      10.查看符号表nm或readelf -s

      11.变量初始化或初始化为零放入.data段  

        变量无初始化放入.bss段

      12.符号

        两种一种强符号(已经初始化的全局变量,  函数的名字),一种弱符号(未初始化的全局变量)。

        强到弱  : 弱自动退化成声明

        强到强      : 报错

        弱到弱   :什么事都可能发生

      13. static    作用于全局变量,局部变量, 函数

            可以使用 调用,,被static修饰的全局变量 get_timer 和 set_timer

      14.  .bss段在文件中不占存储空间,在加载时这个段用0填充, 全局变量如果不初始化则初值为零。

      15.注意 :register :不能取地址

      16. restrict不可变的,和volatile可变的

      17. 作用域(scope)

            函数作用域 : 标示符在整个函数中都有效

            文件作用域 : 标示符从它声明的位置开始直到这个程序文件的末尾都有效

            块作用域 : 从它声明的位置开始到右}括号之间有效

            函数原型作用域 :标示符出现在函数原型(是声明不是定义),从声明位置开始到这个原型末尾之间有效

       18. 对属于同一命名空间,的重名表示符,内层作用域的标示符讲覆盖外层作用域的表示符

            语句标号单独属于一个命名空间

            struct, enum, union类型Tag属于一个命名空间

            struct, union的成员名属于一个命名空间

            所有其它标示符都属于同一个命名空间

                标示符的链接属性 :

                        外部链接,  内部链接, 无链接

        19.static : 用它修饰的变量的存储空间是静态分配的

          auto  : 用它修饰的变量在调用的时候自动在栈上分配存储空间。。

          register :尽可能分配一个寄存器来存储,如果不能当成auto变量处理

          extern :用于多次声明同一个标示符

          typedef : 定义一个类型名

      21 . const , restrict, volatile     : 类型限定符

      22.变量生存期 :

          静态生存期 :具有外部或内部链接,或者被static修饰的变量,在程序开始执行时分配和初始化一次, 以后便一直存在知道程序结束,通常位于, .rodata,.data, .bss段

          自动生存期 :无属性链接,并且没有被static修饰的变量。进入块作用域在栈上或寄存器上分配,在退出块作用域时释放

          动态分配生存期 : 在堆中分配空间,,通过free()函数释放。。

      23.volatile 作用 : 修饰一个变量,(告诉系统变量是可变的,易变的)

      24. 优化 :  -os 优化大小    -01 -02 -03 优化速度。

          英语 : disassemble (拆卸)  restrict (不可变的)  volatile (可变的)

      

  • 相关阅读:
    蓝桥杯 矩阵翻硬币
    2018 南京预选赛 J Sum ( 欧拉素数筛 、Square-free Number、DP )
    HDU 3826 Squarefree number ( 唯一分解定理 )
    HDU 5727 Necklace ( 2016多校、二分图匹配 )
    HDU 5726 GCD (2016多校、二分、ST表处理区间GCD、数学)
    hihocoder 1457 后缀自动机四·重复旋律7 ( 多串连接处理技巧 )
    后缀自动机 ( SAM ) 模板
    2018 焦作网络赛 K Transport Ship ( 二进制优化 01 背包 )
    2018 焦作网络赛 G Give Candies ( 欧拉降幂 )
    蓝桥杯 买不到的数目 ( 裴蜀定理 )
  • 原文地址:https://www.cnblogs.com/cxw825873709/p/3254310.html
Copyright © 2011-2022 走看看