[PIC®/AVR®/dsPIC®产品] AVR单片机 内联汇编的请教

[复制链接]
2277|8
 楼主| elephant00 发表于 2024-12-10 10:54 | 显示全部楼层 |阅读模式
我在读别人的程序中 有下面一段代码~~
__asm__ __volatile__ (
              "1: sbiw %0,1" "\n\t" // 2 cycles
              "brne 1b" : "=w" (us) : "0" (us) // 2 cycles
      );

想问一下  "brne 1b" 中的1b是什么意思~~ 是跳转到1:位置吗??如果是 B代表什么意思啊

评论

xch
跟踪一下反汇编就好理解。编译能不能通过还另说。先证明它没错再琢磨。反正老子看不懂这b  发表于 2024-12-11 09:43
laocuo1142 发表于 2024-12-10 10:56 | 显示全部楼层
Branch(跳转)指令的一部分
ynwa 发表于 2024-12-10 15:19 | 显示全部楼层
在C项目中嵌入汇编用的就是汇编指令本身。如果你对汇编指令不了解,建议你查阅AVR汇编指令集手册:https://ww1.microchip.com/downloads/aemDocuments/documents/MCU08/ProductDocuments/ReferenceManuals/AVR-InstructionSet-Manual-DS40002198.pdf
xch 发表于 2024-12-11 09:22 | 显示全部楼层
看样子是GCC 编译器。__asm__ 是GCC 内联汇编指令。
xch 发表于 2024-12-12 12:41 | 显示全部楼层
本帖最后由 xch 于 2024-12-12 12:42 编辑

  be:        8a e0               ldi        r24, 0x0A        ; 10
  c0:        01 97               sbiw        r24, 0x01        ; 1
  c2:        f1 f7               brne        .-4              ; 0xc0 <main+0x2>
  c4:        ff cf               rjmp        .-2              ; 0xc4 <main+0x6>

//GCC编译后产生的汇编代码
zhuotuzi 发表于 2024-12-13 14:27 来自手机 | 显示全部楼层
怎么还在用汇编
lcczg 发表于 2024-12-16 09:37 | 显示全部楼层
"1b" 是一个相对跳转的标签,其中 "b" 代表 "backwards","1" 代表跳转的位置。所以 "1b" 的意思是向后跳转到第一个标签。应该是这个意思
598330983 发表于 2025-1-12 18:16 | 显示全部楼层
怎么还在用汇编啊,我看MCC生成的代码有一些通过宏定义到了汇编指令。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1031

主题

3961

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部