zoukankan      html  css  js  c++  java
  • 汇编前置

    汇编架构

    X86 :intel的32位架构
    AMD64 :AMD的64位架构
    ARM :Acorn的32位架构(由于功耗小,多用于手机与平板)
    MIPS :衡量计算机速度的指标(一般用于嵌入式路由器)
    IA64 :intel的64位架构
    X86-64CPU :简称为X64,兼容64位和32位

    risv :精简指令集
    cisv :复杂指令集

    基础知识

    1 byte = 8 bit
    1 word = 2 byte
    1 KB = 1024 B
    1 MB = 1024 KB
    1 GB = 1024 MB
    1 TB = 1024 GB

    总线

    1. 计算机各种功能部件之间通信的线
    2. 分为地址总线、数据总线、控制总线
    3. 传输只能是单向的
    4. 也分为串行和并发

    编译型语言与解释型语言

    编译型语言:C++、C、C#、go、rust
    解释型语言:Python、java、php、javascript

    编译过程

    预编译:C语言如展开宏
    编译:编译成汇编语言
    汇编:编译成机器语言
    链接:动态链接(从动态库查找,出来的程序较小)和 静态链接(直接编译,出来的程序较大)

    gcc 的部分指令

    # 预编译后停下来,生成后缀为 .i 的预编译文件
    -E
    
    # 编译后停下来,生成后缀为 .o 的目标文件
    -c
    
    # 汇编后停下来,生成后缀为 .s 的汇编源文件
    -S
    
    ## PS:编译整体指令顺序可记为 ESC(键盘左上角的键)
    ## PS:编译整体后缀顺序可记为 ciso(思科的简称)
    
    # 确定输出文件的名称为 output_filename
    -o output_filename
    
    # 强制使用静态链接库
    -static
    
    # 产生符号调试工具(GNU的 gdb)所必要的符号信息
    -g
    
    # 使用它能够使 gcc 产生尽可能多的警告信息
    -Wall
    
    # 链接时装载名为 libname.a 的函数库(如 -lm 表示链接名为 libm.a 的数学函数库)
    -lm
    

    CPU

    CPU 对存储器的读写

    若一段二进制信息 1000100111O11000

    它在地址总线上就是 89D8H
    它在控制总线上就是 MOV AX,BX

    小结


    存储器芯片

    从读写属性上看分为两类:

    1. 随机存储器(RAM),如主存
    2. 只读存储器(ROM)

    X86的内存地址空间

    上图是 X86的内存地址空间,以后学习汇编也以 X86为案例去学习

    喜欢划水摸鱼的废人
  • 相关阅读:
    ASP.NET获取服务器信息大全
    放在IIS上就报错
    WEB资源管理器
    用于主题检测的临时日志(925f1df8130a43969337cfd4cbeb06a4 3bfe001a32de4114a6b44005b770f6d7)
    如何正确的判断String是否为空
    直接输出另存
    查询聊天消息SQL语句!
    ShareSDKUndefined symbols for architecture arm64
    今天起航...
    UIScrollView方法 scrollRectToVisible: animated: 无效(不工作,无效果)的问题
  • 原文地址:https://www.cnblogs.com/CourserLi/p/15312363.html
Copyright © 2011-2022 走看看