文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
3. 循环
循环执行。
- 将循环次数载入
RCX
。 - 执行 <body> 指令。
- 执行
loop
指令。
loop
会dec rcx
,等于 0 则终止循环,类似do { ... } until (rcx == 0)
语句。
global _start section .text main: xor rax, rax xor rbx, rbx mov rcx, 6 ; 循环计数。 .loop: ; do { inc rax ; rax++ add rbx, 10 ; rbx += 10 loop .loop ; } until (--rcx == 0); exit: mov rax, 60 xor rdi, rdi syscall _start: jmp main
$ make $ gdb ./test (gdb) b main.loop (gdb) r (gdb) display $rax (gdb) display $rbx (gdb) display $rcx (gdb) c Breakpoint 1, 0x000000000040100b in main.loop () 1: $rax = 1 2: $rbx = 10 3: $rcx = 5 Breakpoint 1, 0x000000000040100b in main.loop () 1: $rax = 2 2: $rbx = 20 3: $rcx = 4 Breakpoint 1, 0x000000000040100b in main.loop () 1: $rax = 3 2: $rbx = 30 3: $rcx = 3
提示:使用
gdb -tui
单步观察。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论