最近,在浏览obdev的atmel avr虚拟usb驱动器时,我发现了这个表达式
lo8(-usbrxbuf)遗憾的是,在avr的文献中,关于lo8修饰语的论述并不多.这里有人能解释清楚吗?或者给出任何链接?
发布于 2013-12-28 09:20:42
在谷歌搜索"lo8 avr“后,这首当其冲。
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”创建了一个重新定位信息类型加载器符号(或表达式)--非常类似于段地址。
https://stackoverflow.com/questions/20811927
复制相似问题