rendered paste body .globl _axel
_axel:
pushl %ebp
movl %esp,%ebp
pushl %edx
movl 8(%ebp),%eax # char dest Hvor alt ska ende.;
movl 12(%ebp),%edx # char format som holder {"en eller annen streng"}
.L0:
cmpb $0,(%edx)
jz .endl
movb (%edx),%bl
cmpb $37,%bl
je .switch
movb %bl,(%eax)
incl %edx
incl %eax
jmp .L0
.char:
movl basep,%ecx
movb (%ecx,%ebp),%bl
movb %bl,(%eax)
incl %edx
incl %eax
addl $4,basep
jmp .L0
.numb:
push %edx
push %eax
and $0,%edx
movl basep,%edi
movl (%edi,%ebp),%ecx #hent tallet
movl %ecx,nmb
movl $10,%esi #for à dele på10 hver gang
movl $10000000,%eax # lag deletall
.whnmb:
cmpl $0,%eax #skjekk om deletall = 0
jz .endnmb
cmp %eax,%ecx #Skjekke at dette er riktig vei
jle .else
push %eax #legg deletall på stakk
movl %ecx,%eax #flytt x til der vi skal dele
popl %ecx #hent deletall
idivl %ecx #del eax/ecx
and $0,%edx
idivl %esi
addl asc,%edx
push %ecx #legg deletall på stakk
popl %edi #hent deletall og legg i edi
popl %eax #hent hvor vi er i dest[]
movb %dl,(%eax) #flytt i dest[]
incl %eax #pluss 1 paa eax
push %eax #legg eax paastak
movl nmb,%ecx
and $0,%eax
and $0,%edx
movl %edi,%eax
.else:
idivl %esi #divide on ten
jmp .whnmb
.endnmb:
addl $4,basep
popl %eax
popl %edx
incl %edx
jmp .L0
.L2:
movl basep,%edi
movl (%edi,%ebp),%ecx
#call dumpreg
.L3:
cmpb $0,(%ecx)
jz .L4
movb (%ecx),%bl
movb %bl,(%eax)
incl %eax
incl %ecx
jmp .L3
.L4:
addl $4,basep
incl %edx
#incl %edx
#incl %eax
and $0,%ecx
#call dumpreg
jmp .L0
.switch:
incl %edx
movb (%edx),%bl
cmpb $99,%bl
jz .char
cmpb $100,%bl
jz .numb
cmpb $115,%bl # Her skal det skjekkes etter %s men 115 funker ikke
jz .L2
.endl:
movb $0,(%eax)
popl %edx
popl %ebp
ret
.data
basep: .long 16
incecx: .long 0
incedi: .long 0
nmb: .long 0
inctext: .long 0
ant: .long 0
asc: .long 48
big: .long 10