论:嵌入式C语言是否需要数据结构?

0x00:前记

前几天看到群组里面几个小伙伴讨论关于嵌入式软件C语言编程是否需要数据结构。有些小伙伴说,嵌入式嘛,代码很轻松,也就不需要数据结构了呀~当时我觉得很奇怪,当然我也不同意他的想法,所以写下了当前的文章用以佐证。

0x01:开头

代码、数据结构、堆栈组成了当前的软件系统。从汇编到现在的各种语言,基本上都可以分为这三块。大型的程序还会包括一部分的文件进行辅助操作,但是一般都是一些特别的设置保存项。追根溯源,其实是汇编语言对于程序模型的表述就是:代码、数据、堆栈结构。而所有的编程语言最后的根源都是汇编语言转换成的机器语言被机器执行。所以所有的编程语言也都是使用这三种表述的形式。而C语言是最接近汇编语言的编程语言,所以也继承了这种表述方式。
而汇编语言是所有编程语言的根源,而我又是8086汇编入门,对此比较理解,我就先用这个语言解释为什么嵌入式系统C语言编程需要使用数据结构。
汇编语言主要分为:代码段、数据段、堆栈段。代码段顾名思义,就是硬件PC指向的位置;数据段主要是各个寄存器使用的位置,指令可以使寄存器取出数据段位置的数据;堆栈段类似于数据段,但是存储的是CPU使用状态,以待程序跳转时使用,也是整个程序的核心,几乎所有的程序破解、漏洞利用的方式都是使用堆栈Hook利用软件,而几乎所有程序崩溃都是因为堆栈使用不当导致程序指针跑飞。而C语言又是距离汇编语言最近的语言,所以继承了很多汇编语言的特性,但是屏蔽了堆栈段与寄存器的使用,而保留了部分PC指针的使用。也被称为低级语言。而因为汇编语言的情况,几乎所有的语言都是包括堆栈、代码、数据,且高级语言将其封装成各种形式,但是核心还是这三块。
高级语言主要分为编译类语言与解释类语言,他们最大的区别在于一个将代码预编译,使用系统内部的指令系统;一个使用一个中间层(解释器)进行数据转换以应对多设备。代码段经过这种分层可以更好的使用。数据段对于CPU来说只是一群0和1的数字,而一个完整的数据单位主要是根据CPU的位数而定,当前CPU位数标志了CPU的寄存器、数据总线、地址总线位数,所以一个完整的数据单位即为一个CPU的位数。所以数据段的定义完全是由程序员进行定义。现在面向对象的主要思想是将一个自然界的事务封装成一个特定的解决方式及可以复用的方法(函数)。关于事务的属性封装主要是依靠定义的数据,数据的定义大致分为三步:基础数据格式–>中间数据格式–>高级数据格式。
基础数据格式和编译器关系密切,基本上是8位数据、16位数据、32位数据、64位数据以及相应的浮点型数据。中间数据格式主要是一些基本的数据格式,一些可以复用的基本格式。高级数据格式是一些比较常用的数据格式,由基础数据与中间数据组成,是对于自然界的一

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

GreenDreamer

如果帮到了你,还望请我喝杯咖啡

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

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

打赏作者

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

抵扣说明:

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

余额充值