【发布时间】:2019-06-18 05:48:11
【问题描述】:
在为 PIC 微控制器编写固件时,我想到了这个问题。
我知道有两种方法可以初始化微控制器中的寄存器。举个例子,如果我们将端口初始化为输出,一种方法是编写如下命令,它将1 分配给 TRISx 寄存器中的每一位
方法一
TRISX = 0xFF;
同样的事情可以通过单独分配位来完成。
方法二
_TRISX0 = 1;
_TRISX1 = 1;
_TRISX2 = 1;
...
_TRISX7 = 1;
我的问题是,编译器是否会将其视为相同,完成这两项操作所需的时间是否相同?还是方法 1 需要一个时钟周期,而方法 2 需要 8 个时钟周期(我的意思是慢了约 8 倍)?
我尝试阅读X16 compiler guide,但找不到任何提示。
【问题讨论】:
-
为什么不检查生成的机器码?
-
编译器生成的机器码是hex文件吧?
-
十六进制文件是原始机器代码的二进制解释,以 ASCII 格式表示。它们不是人性化的阅读。你应该看的是反汇编——任何像样的工具链都有反汇编选项。好的将与 C 源代码一起显示反汇编。一些好的调试器也有这个选项。至少您可以在任何调试器中看到原始反汇编。
标签: c embedded microcontroller