这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » gcc 關于gcc編譯后生成的匯編代碼的問題

共2条 1/1 1 跳转至

gcc 關于gcc編譯后生成的匯編代碼的問題

院士
2006-09-17 18:14:16     打赏
gcc 關于gcc編譯后生成的匯編代碼的問題



关键词: 關于     編譯     生成     匯編代     問題    

院士
2006-12-22 22:43:00     打赏
2楼
问 各位大蝦,兄弟剛開始用c寫AVR,請指點.
我寫了几個小程序,編譯通過,但看編譯后生成的匯編代碼時有一些語句沒看懂
主要是一些跳轉指令,如:
void delay(t)
{
  int i;
  for(i=0;i<t;i++);
}

此段子程式編譯后為:
  cp      r1,r24
  cpc     r1,r25
  brge    .+4
  sbiw    r24,0x01
  brne    .-4
  ret


其中第 3 ,5行与我們習慣的寫法不同,(我用匯編寫過一些程式,對AVR匯編比較了解)
我不知道"  .+4 "是什么意思,其中有"4 "是如何算得的.
請大家幫幫忙




1: “.” 表示当前地址知道了吧 2: 知道了知道了,謝謝zlei 3: 一般跳转指令后面都有地址的。brge    .+4          ; 0xae就是直接跳转到0xae地址了。

  a4:    18 16           cp    r1, r24
  a6:    19 06           cpc    r1, r25
  a8:    14 f4           brge    .+4          ; 0xae
  aa:    01 97           sbiw    r24, 0x01    ; 1
  ac:    f1 f7           brne    .-4          ; 0xaa
}
  ae:    08 95           ret 4: 感謝謝謝 zsmbj 的熱心幫助

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]