在汇编程序中分支到标签时 2f 是什么意思?
What does 2f mean when branching to label in assembler?
我正在尝试理解一些汇编代码片段:
".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"
当程序分支到行中的标签 2 时,"f" 是什么意思:
" BEQ.n 2f\n"
在
行用 "b" 分支有什么区别
" BNE.n 1b\n"
它是 gnu 汇编语言特有的懒惰的程序员快捷方式 AFAIK。 (汇编语言是由assembler定义的,读取它的程序,有很多arm,mips,x86等汇编语言)
1:
2:
b 1b
b 2b
b 1f
b 2f
2:
b 1b
b 1f
1:
nop
nop
assemble 然后disassemble
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)
我正在尝试理解一些汇编代码片段:
".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"
当程序分支到行中的标签 2 时,"f" 是什么意思:
" BEQ.n 2f\n"
在
行用 "b" 分支有什么区别" BNE.n 1b\n"
它是 gnu 汇编语言特有的懒惰的程序员快捷方式 AFAIK。 (汇编语言是由assembler定义的,读取它的程序,有很多arm,mips,x86等汇编语言)
1:
2:
b 1b
b 2b
b 1f
b 2f
2:
b 1b
b 1f
1:
nop
nop
assemble 然后disassemble
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)