浅入浅入非常浅入工具原理

工具原理及C语言语法基础

编程语言之编程型语言

计算机是怎么工作的?

计算机工作核心:CPU(执行他认识的指令集)

存储指令的仓库:内存

CPU要想在仓库里取出指令,这时候就要引入地址线,通过地址线的选择,选到了仓库中的某一个位置,CPU通过地址线发出度或写的指令,然后内存就会通过数据线跟CPU进行相应的读写操作

可以理解为我们的计算机就是让CPU不断执行指令的循环过程,不断的通过仓库让我们所说的指令让CPU执行。

当内存存储的东西越来越多不够用了,这时候就用到了外存。内存可以和外部存储器相互交换。

image-20221120212746400

CPU里指令长什么样?

ARM处理器的指令(为例)

  • 32bit的指令为例

image-20221120212838293

  • 一个具有8B大小能够在ARM体系CPU下运行的二进制文件image-20221120213856329
  • 0x EF 00 00 12image-20221120213920561
  • 汇编语言:swi 0x12

编译器简介

汇编语言难于记忆,不便于阅读,怎么办?

人类语言的翻译官 — 编译器的诞生
  • 如何约定这个翻译官的工作规范那?
    • 1989年,美国国家标准协会(ANSI)提出的ANSI C
    • 1990年,ISO组织采纳ANSI C后,提出ISO C90
    • 1999年,ISO组织继续扩充C语言编译器的能力,提出C99
    • 后续又提出了C11标准
  • 如何学习C语言
    • 翻译官在阅读我们写的代码,而代码就是一个个单词和标点符号
    • 那么我们要让翻译官认识单词,认识相应的标点符号
    • 翻译官怎么认识单词?
    • 翻译官怎么认识标点符号那?
翻译官有哪些,怎么用?
  • 微软阵营 MSVC
  • 开源组织阵营 GNU
    • gcc
      • Linux : gcc
      • Windows : minGW
翻译官的工作流程是什么?
  • 编译 —> 汇编 —> 链接
  • 预处理器
    • gcc –E –o a.i a.c
  • 编译器
    • gcc –S –o a.s a.i
  • 汇编器
    • gcc –c –o a.o a.s
  • 链接器
    • gcc –o build.exe a.o

工作流程图

预处理器介绍 #开头+特殊单词

预处理指令

编译前要处理的东西

  1. 包含头文件 —> #include(所有预处理指令都是#+单词)

  2. 宏定义 —> #define 宏名 宏体

  3. 条件编译 #ifdef #endif

    image-20221121082641701

    意思是如果定义了DEBUG那就为真,输出hello world

    在工程项目中,怎么做到不改变代码的前提下,可以控制一段代码想让执行和不想让他执行呢?

    这个时候就要用到条件编译

    #ifdef +任意单词名字{}

    #else{}

    #endif

    怎么做到定义这个开关呢

    方法一 在宏定义的时候, 人为的在代码前面define一个你定义的这个名字(缺点:改动代码,可能引起纠纷)

    方法二 在gcc中定义 -D+名字 (好处是可以在代码不变的前提下对代码进行调试和发布)

    image-20221121083752591

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tian Meng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值