编译器初识

汇编语言

汇编语言对应cpu指令集(二进制机械码),兼容性不好,不能跨平台,arm的汇编和x86汇编差别很大
处理器指令集:https://blog.csdn.net/antony1776/article/details/83743856

  • 并发,当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。.这种方式我们称之为并发(Concurrent)
  • 并行,当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)

多核cpu和多cpu:https://www.zhihu.com/question/271821176

汇编中没有线程概念,进程是操作系统为了实现并发组织的集合结构

编译器

编译目标:X86(gcc)、arm(arm-linux-gcc编译)等处理器架构

汇编直译的代码可以可以绕过内核(写入内核的汇编代码),没有系统函数之间的层级调用(汇编没有c语言那样的头文件定义)
https://www.zhihu.com/question/43575404?sort=created

  • crt是c语言用户层系统封装,c依赖头文件
  • 内核头文件代码定义硬件地址等信息

编译原理

  • 词法分析
  • 语法分析,生成AST

coff/elf文件

cof(编译obj),Common Object File Format
–>扩展cof文件,结构和elf、pe基本相同
elf(linux),Executable And Linkable
pe(windows),Portable Executable

你可能感兴趣的:(程序人生,编译器)