详细说明avr汇编器修饰符lo8很难找到

问题描述 投票:0回答:1

最近,在通过obdev的atmel avr的虚拟USB驱动器时,我找到了这个表达式

lo8(-usbrxbuf)

遗憾的是,在avr-gcc的文档中没有给出关于lo8修饰符的更多信息。这里有人可以完全解释或给出任何关于它的链接吗?

assembly inline-assembly avr-gcc
1个回答
1
投票

谷歌搜索“lo8 avr”给this作为第一击。

lo8此修饰符允许您将地址表达式的0到7位用作8位可重定位表达式。

[编辑]

像这儿:

push    YH                  ;2 [2]
lds     YL, usbInputBufOffset;2 [4]
clr     YH                  ;1 [5]
subi    YL, lo8(-(usbRxBuf));1 [6]
sbci    YH, hi8(-(usbRxBuf));1 [7]

看起来好像在这里找到缓冲区位置地址。我不知道为什么从偏移中减去负基地址而不是添加,但是......

哦,我猜“可重定位”在这里意味着“加载时间”。也就是说,该值不必在汇编时知道,但必须在运行时知道并保持不变。也许“lo8”和“hi8”创建一个重定位信息类型加载器符号(或表达式) - 很像段地址。

© www.soinside.com 2019 - 2024. All rights reserved.