我试图理解汇编程序代码的一些片段:
".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"发布于 2017-09-05 13:22:38
它是专门针对gnu汇编语言的一个懒惰的程序员捷径AFAIK。(汇编语言是由汇编程序定义的,读取汇编语言的程序有许多arm、mips、x86等汇编语言)
1:
2:
b 1b
b 2b
b 1f
b 2f
2:
b 1b
b 1f
1:
nop
nop组装后拆卸
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)https://stackoverflow.com/questions/46055305
复制相似问题