【问题标题】:Is there a naming convention for n*3 registers which are semantically connected?语义上连接的 n*3 个寄存器是否有命名约定?
【发布时间】:2013-12-08 01:07:36
【问题描述】:

我知道命名约定,如果有 n*2 个在语义上连接的寄存器或变量,您应该将它们命名如下:

REGH REGL

如果是 2*2 寄存器,则为:

REGHH REGHL REGLH REGLL

最后两个字母代表high-high、high-low、low-high和low-low。是否有任何约定为 3 个寄存器声明相同的内容?喜欢:

REGH REGM REGL

在这种情况下,最后一个字母代表高、中和低。 6 字节看起来像这样:

REGHH REGHM REGHL REGLH REGLM REGLL

我希望你明白我的意思。这种情况有什么约定吗?

【问题讨论】:

  • 你刚编出来的那个在我看来完全正常......
  • 我不知道。如果你这样命名它们并且你在源代码中看到一个寄存器REGH,这可能意味着只有另一个REGL。没有提示现有的REGM
  • 所有这些寄存器会被抽象为struct吗?
  • 这个问题的上下文是什么?您正在设计 24/48 位处理器吗? H/M/L 没问题。第二个是拉伸它,我已经避免 HH/HL/LH/LL 而是使用数字。
  • 您的发明听起来很合理,但您可以考虑将内存中的顺序更改为 HML。 @BitFiddlingCodeMonkey 提出了一个共同的想法。你可以做你正在做的事情,但也可以声明一个从 0xC0 开始的结构。然后,您还可以将寄存器引用为 PRSCL.HIGH、PRSCL.MED 和 PRSCL.LOW。这是很常见的做法。

标签: c assembly embedded naming-conventions microcontroller


【解决方案1】:

The Atmel AVR Microcontroller, 1st ed. [P. 173; 6.10.1]

对于大于 16 位的寄存器,字节从最低有效字节开始编号。例如,32 位 ADC 校准寄存器被命名为 CAL。这四个字节被命名为 CAL0、CAL1、CAL2、CAL3(从最低到最高有效字节)。

所以在 8 位系统中我们甚至不应该这样做:

REGHH REGHL REGLH REGLL

但是:

REG3 REG2 REG1 REG0

【讨论】:

    猜你喜欢
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 2012-05-07
    相关资源
    最近更新 更多