rendered paste body# $Author: sitexec $
# $Revision: 1.2 $
# $Date: 2007/04/24 13:25:12 $
# $Header: /home/sitexec/cvs/sitexec/dir/Assembly/master/mmScore/mmScore.S,v 1.2 2007/04/24 13:25:12 sitexec Exp $
#.global _start
#_start:
#jmp mmScore
.global mmScore
mmScore:
nop
#MM_NPEGS = 4
oldebp = 0
retaddr = oldebp + 32
c1 = retaddr + 4
c2 = c1 + 4
pNumBlack = c2 + 4
pNumWhite = pNumBlack + 4
i = oldebp - 4
j = i - 4
b1 = j - MM_NPEGS
b2 = b1 - MM_NPEGS
tempblack = b2 - 4
tempwhite = tempblack - 4
pusha
movl %esp, %ebp
addl $tempwhite, %esp
movl $0, i(%ebp)
movl $0, tempblack(%ebp)
movl $0, tempwhite(%ebp)
#movl i(%ebp), %ebx
movl $0, %edx
startfor1:
movl i(%ebp), %ebx
cmpl $MM_NPEGS, %ebx
jz endfor1
movl c1(%ebp), %edx
addl %ebx, %edx
movb (%edx), %dl
movl %ebp, %edx
addl $b1, %edx
addl %ebx, %edx
movb %dl, (%edx)
addl $1, i(%ebp)
jmp startfor1
endfor1:
movl $0, %edx
startfor2:
movl i(%ebp), %ebx
cmpl $MM_NPEGS, %ebx
jz endfor2
movl c2(%ebp), %edx
addl %ebx, %edx
movb (%edx), %dl
movl %ebp, %edx
addl $b2, %edx
addl %ebx, %edx
movb %dl, (%edx)
addl $1, i(%ebp)
jmp startfor2
endfor2:
movl $0, i(%ebp)
startwhile1:
movl i(%ebp), %ebx
cmpl $MM_NPEGS, %ebx
jz endwhile1
startif2:
#movl b1+i(%ebp), %eax
#cmpl %eax, b2+i(%ebp)
movl %ebp, %eax
addl $b1, %eax
addl i(%ebp), %eax
movb (%eax), %cl
movl %ebp, %eax
addl $b2, %eax
addl i(%ebp), %eax
movb (%eax), %ch
cmpb %cl, %ch
jnz endif2
addl $1, tempblack(%ebp)
#movl $1, b1+i(%ebp)
movl %ebp, %eax
addl $b1, %eax
addl i(%ebp), %eax
movb $-1, (%eax)
#movl $2, b2+i(%ebp)
movl %ebp, %eax
addl $b2, %eax
addl i(%ebp), %eax
movb $-2, (%eax)
endif2:
addl $1, i(%ebp)
jmp startwhile1
endwhile1:
movl $0, i(%ebp)
startwhile2:
movl i(%ebp), %ebx
cmpl $MM_NPEGS, %ebx
jz endwhile2
movl $0, j(%ebp)
cmpl j(%ebp), %ebx
jz endwhile3
startif3:
#movl b1+i(%ebp), %eax
#cmpl %eax,b2+j(%ebp)
movl %ebp, %eax
addl $b1, %eax
addl i(%ebp), %eax
movb (%eax), %cl
movl %ebp, %eax
addl $b2, %eax
addl j(%ebp), %eax
movb (%eax), %ch
cmpb %cl, %ch
jz nexttest
jmp endif3
nexttest:
movl i(%ebp), %eax
cmpl %eax, j(%ebp)
jnz endif3
addl $1, tempwhite(%ebp)
#movl $1, b1+i(%ebp)
movl %ebp, %eax
addl $b1, %eax
addl i(%ebp), %eax
movb $-1, (%eax)
#movl $2, b2+j(%ebp)
movl %ebp, %eax
addl $b2, %eax
addl j(%ebp), %eax
movb $-2, (%eax)
endif3:
addl $1, j(%ebp)
endwhile3:
addl $1, i(%ebp)
jmp startwhile2
endwhile2:
movl tempblack(%ebp), %eax
movl $5, pNumBlack(%ebp)
movl tempwhite(%ebp), %eax
movl $5, pNumWhite(%ebp)
#movl tempblack(%ebp), %eax
#movl pNumBlack(%ebp), %ebx
#movl $0, (%ebx)
#movl tempwhite(%ebp), %eax
#movl pNumWhite(%ebp), %ebx
#movl $0, (%ebx)
movl %ebp, %esp
popa
ret