Bu biraz gariptir, ancak bugün GNU assembler'la (en azından sözdizimini okuyabilmek istiyorum) etrafa dolanıp, bu küçük örneklemi elde etmeye çalışıyordum. benim çalışmam Yani sadece 0'dan 100'e gitmek istiyorum, tüm zamanları basıyorum. Bu yüzden birkaç dakika sonra ben böyle bir cevap:Montaj dilinde 0'dan 100'e artırılıyor
# 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:
Bunu aldığım tüm 3 tekrar tekrar basılmış ve olduğunu. Söylediğim gibi, sadece küçük bir örnek, bu yüzden bu konuda fazla endişelenme, hayat ya da ölüm problemi değil.
(Biçimlendirme biraz bozuk, ancak önemli değil).
'xorl% eax% eax' $ 0,% eax' movl' tamamen eşdeğerdir ve 3 bayt az sürer. Sadece söylüyorum. :) –