これはちょっと変わった話ですが、今日、私は GNU アセンブラーをいじっていました (少なくとも構文を読めるようにしたいのです)。つまり、0から100まで行きたいだけで、その間ずっと数字を出力しています。だから数分後、私はこれを思いつきます:
# count.s: print the numbers from 0 to 100.
.text
string: .asciz "%d\n"
.globl _main
_main:
movl $0, %eax # The starting point/current value.
movl $100, %ebx # The ending point.
_loop:
# Display the current value.
pushl %eax
pushl $string
call _printf
addl $8, %esp
# Check against the ending value.
cmpl %eax, %ebx
je _end
# Increment the current value.
incl %eax
jmp _loop
_end:
これから得られるのは、3回何度も印刷されたものだけです。私が言ったように、ほんの少し不自然な例なので、あまり心配しないでください。生死の問題ではありません。
(フォーマットは少し乱れていますが、大きな問題はありません)。