2f在分支到汇编器中标记时意味着什么?
问题描述:
我想了解的汇编代码的一些片段:2f在分支到汇编器中标记时意味着什么?
".syntax unified\n"
"1:\n"
" NOP\n"
" NOP\n"
" NOP\n"
" NOP\n"
" NOP\n"
" CMP %[SystemCoreClock],%[clock16MHz]\n"
" BEQ.n 2f\n"
" NOP\n"
" NOP\n"
" NOP\n"
" NOP\n"
" NOP\n"
" NOP\n"
" NOP\n"
" NOP\n"
" NOP\n"
"2:\n"
" SUBS %0, %0, #1\n"
" BNE.n 1b\n"
".syntax divided\n"
什么是“F”的含义时,程序转移到行标签2:
" BEQ.n 2f\n"
和的区别是什么时分行在线
" BNE.n 1b\n"
答
这是一个懒惰的程序员捷径AFAIK特定于GNU汇编语言。
1:
2:
b 1b
b 2b
b 1f
b 2f
2:
b 1b
b 1f
1:
nop
nop
(汇编语言是由汇编器,读取它的程序,有许多臂,MIPS,X86等汇编语言定义的)组装,然后拆卸
00000000 <.text>:
0: eafffffe b 0 <.text>
4: eafffffd b 0 <.text>
8: ea000002 b 18 <.text+0x18>
c: eaffffff b 10 <.text+0x10>
10: eafffffa b 0 <.text>
14: eaffffff b 18 <.text+0x18>
18: e1a00000 nop ; (mov r0, r0)
1c: e1a00000 nop ; (mov r0, r0)
什么机/架构/这是平台吗?看起来像MC68k,但我不熟悉这些后缀。 – unwind
作为一个猜测,我会说“f”表示转发,而“b”表示后退。这些也可能提示CPU的分支预测器。了解这个架构将会有所帮助。 – Retr0id
如果您使用的是AS,那么[Local symbols](ftp://ftp.gnu.org/old-gnu/Manuals/gas/html_chapter/as_5.html#SEC48)。 –