是否有必要使用程序集谈论微控制器?

电脑杂谈  发布时间:2020-04-29 03:14:41  来源:网络整理

单片机汇编_单片机汇编_80c51单片机汇编

gashero

136个人同意答案

程序可以分为控件和算法. 由于MCU资源有限,因此主要面向控制. 高级语言更适合算法,而低级语言更适合控制.

主要用于播放单片机的控制,但最好组装. 毕竟,许多操作都有直接对应的指令,并且用C模拟非常麻烦. 尽管编译器会在一定程度上针对相应的汇编指令进行优化.

单片机汇编_单片机汇编_80c51单片机汇编

以AVR微控制器为例. 将高电平或低电平输出到GPIO引脚.

C代码:

PORTB | = _BV(PB0);

PORTB&=〜_BV(PB0);

单片机汇编_单片机汇编_80c51单片机汇编

组装代码:

SBI PORTB单片机汇编,PB0

CBI PORTB,PB0

可以看出,汇编控制引脚简单明了,但是必须编写C非常麻烦,因为无法直接控制这些位. 尽管生成最多的机器代码可以相同.

单片机汇编_80c51单片机汇编_单片机汇编

随着程序复杂度的增加,可以体现出高级语言的优势. 但是至少阅读该程序集是有意义的.

几年前,我在STM32上编写了一个程序,并且调用串行端口始终失败. 后来,示波器发现下位计算机的串行端口频率错误. 但是C代码与官方库完全相同. 在疯狂的情况下,我反汇编了C生成的ELF文件,并跟踪了几天,发现我修改了C启动之前的启动脚本,并删除了bss部分的初始化. ST的官方标准库依赖于此预初始化的数组. 正是这个过程,我敢于阅读一些ARM thumb程序集,并在C语言的主要功能之前弄清楚了那些东西. 如果只是说实话,就不会使用C来解决此问题.

因此,我的建议是学习在汇编语言中编写小型程序的能力单片机汇编,了解反汇编结果以及理解几种基本的汇编级优化方法的能力. 其余这些规模较大的程序都用C语言处理.

编辑于2016-01-06

单片机汇编_80c51单片机汇编_单片机汇编

疯狂的蔬菜

75个人同意答案

用C语言学习“ SCM编程”.

组装是学习“ SCM”的正确姿势. 尽管这看起来很过时,但是当您尝试使用汇编语言编写某些东西时,尤其是在具有数据采集和处理功能的应用程序中,手动操作管理通用寄存器和RAM时,您自然会了解什么是单芯片计算机. 架构,编译器和程序设计,以及许多相关的东西,以及C语言的真正优势.

SCM不是凭空制造的. 编写汇编程序以学习“ SCM”实际上是帮助您解决此问题. 当然,如果您只想使用它,则确实不需要学习汇编.

编辑于2015-12-29


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/dianqi/article-192505-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...