HELp!!!!!
I cann't find a BUG in my CODE.
.text
.global main
main: call readi32 movl %eax, %ebx // ebx = size movl %esp, %ecx // ecx = initial stack
read_seq: // read sequence and check it testl %ebx, %ebx jz finish_read decl %ebx
call readi32
cmpl $0, %eax
jl negative
pushl %eax
jmp read_seq
negative: cmpl %esp, %ecx je wrong_sequence popl %edx addl %eax, %edx jnz wrong_sequence jmp read_seq
wrong_sequence: xorl %eax, %eax call writei32 call finish
finish_read: cmpl %esp, %ecx jne wrong_sequence
movl $1, %eax
call writei32
call finish
And this must be compiled with simpleio lib:
/* -*- asm -*- */
.text
_form1: .asciz "%d" .text .align 16 .global readi32 readi32: pushl %ebp movl %esp, %ebp
subl $4, %esp
and $-16, %esp
leal -4(%ebp), %eax
push %ecx
push %edx
sub $8, %esp
mov %eax, 4(%esp)
movl $_form1, (%esp)ifdef APPLE
call _scanf
else
call scanf
endif
add $8, %esp
movl %eax, %ecx
movl -4(%ebp), %eax
clc
cmpl $1, %ecx
je readi32x
stcreadi32x:
pop %edx pop %ecx movl %ebp, %esp popl %ebp ret
.text
_form2: .asciz "%d\n" .text .align 16 .global writei32 writei32:
pushl %ebp movl %esp, %ebp and $-16, %esp push %ecx push %edx
sub $8, %esp
mov %eax, 4(%esp)
movl $_form2, (%esp)ifdef APPLE
call _printf
else
call printf
endif
add $4, %esp
push stdout
call fflush
add $4, %esp
pop %eax
pop %edx
pop %ecx
movl %ebp, %esp
popl %ebp
ret
.align 16
.global nlnl: pushl %ebp movl %esp, %ebp and $-16, %esp push %ecx push %edx
sub $8, %esp
movl $'\n', (%esp)ifdef APPLE
call _putchar
else
call putchar
endif
add $8, %esp
pop %edx
pop %ecx
movl %ebp, %esp
popl %ebp
ret
.text
.align 16
.global finishfinish: and $-16, %esp sub $16, %esp movl $0, (%esp)
ifdef APPLE
call _exit
else
call exit
endif
.text
_form3: .asciz "%lli" .align 16 .global readi64 readi64: pushl %ebp movl %esp, %ebp sub $8, %esp and $-16, %esp push %ecx
leal -8(%ebp), %eax
sub $12, %esp
mov %eax, 4(%esp)
movl $_form3, (%esp)ifdef APPLE
call _scanf
else
call scanf
endif
add $12, %esp
movl %eax, %ecx
movl -8(%ebp), %eax
movl -4(%ebp), %edx
clc
cmpl $1, %ecx
je readi64x
stcreadi64x:
pop %ecx movl %ebp, %esp popl %ebp ret
.text
_form4: .asciz "%lld\n" .align 16 .global writei64 writei64:
pushl %ebp movl %esp, %ebp and $-16, %esp push %ecx
sub $12, %esp
mov %edx, 8(%esp)
mov %eax, 4(%esp)
movl $_form4, (%esp)ifdef APPLE
call _printf
else
call printf
endif
add $4, %esp
push stdout
call fflush
add $4, %esp
pop %eax
pop %edx
pop %ecx
movl %ebp, %esp
popl %ebp
ret







Why codeforces does not support assembly language?