-
编译器前端概述与可信编译器
Java程序员应该会非常熟悉Spring,在Spring框架中对注解的支持和字节码动态生成都属于编译技术;前端程序员通常会使用Babel这个工具,主要是为了将ES6语法编写的代码转换为做向后兼容的JS语法...
2023-05-15 digiproto
-
二进制文件符号信息
在日常的开发工作中,程序员经常使用gdb工具来调试二进制编译文件,以定位和解决一些bug。但同时,很少会有人关注二进制文件中的调试信息从何而来,又是怎么保存和解读的呢?
2023-05-15 digiproto
-
关于嵌入式可执行程序,你了解多少?
嵌入式系统由硬件系统和软件系统组成,因此为了使整个嵌入式系统运行起来,必须有相应的程序,我们一般所说的程序,实际上就是存储在硬件设备中的一些可执行代码。可执行代码包括嵌入式操作系统和应用软件。
2023-05-15 digiproto
-
C语言函数在硬件中的执行原理
众所周知,C语言的应用程序总是以「main」函数作为程序入口地址,那到底什么是函数呢? 程序的执行其实本质上是CPU对指令的处理,那么一个C函数的本质其实也相当于一组协同工作的指令,而这组指令能够通过相互之间的配合实现特定的功能(Function)。例如从SPI缓冲区中提取数据,配置定时器的延时时间,或者从内存读取数据并写入DAC的寄存器中。 一个函数能完成的功能往往不止一个,比如某个函数能够实现通过串口传输一个字节的数据,然后检查状态位直到接收到一个字节,最后把接收到的所有数据组合起来做实际的计算。
2023-05-15 digiproto
-
关于Cortex-M3处理器内核中断异常处理机制你了解多少?
Cortex-M3处理器内核是ARM公司设计的Cortex-M系列的一款经典处理器内核,基于32位ARMv7内核架构,采用Thumb-2指令集,完全没有使用ARM指令集,即不能执行ARM指令。Thumb-2是16位Thumb 指令集的一个超集,在Thumb-2中,16位指令首次与32位指令并存。Cortex-M3处理器的特点包括:性能强劲、功耗低、实时性好、代码密度得到很大改善、低成本的整体解决方案。
2023-05-15 digiproto
-
浅谈状态机
在工业生产中,常常会使用到建模软件,而建模的目的就是为了在制造的前期进行验证和试错,以确保制造出来的东西能够很好的使用。而在建模仿真的领域中,状态机又是逃不开的一个话题。
2023-05-15 digiproto
-
设计模式六大原则你都知道吗?
单一职责原则的核心是功能单一化,功能单一化后每个模块只受该功能的影响,不会出现其他功能的改变导致必须修改该模块。比方说登录模块和用户管理模块,如果合在一起,会导致如果需要增加一个临时登录的功能必然会影响用户管理模块,至少上线的时候用户管理模块也是断掉的。
2023-05-15 digiproto
-
VxWorks任务调度
大家知道,CPU运行的基本单位其实是一条一条的指令,如今我们通过编译器就可以将代码生成为机器指令,也就是所谓的二进制文件,这些指令组成了程序。程序在装入内存中执行时被称之为任务,或者说是进程。随着处理器性能的日益强大,程序也越来越复杂,因此诞生了操作系统来帮助我们管理进程,更合理地分配处理器资源,这也就是任务调度的目标。而在VxWorks中,能够调度起这些任务,最核心的就是reschedule调度算法了。
2023-05-15 digiproto