PEJI.IR

باز هم چنلج آرایه ها

۱۴۰۰ آبان ۲۵, سه‌شنبه ساعت ۸:۰۸

پیاده سازی آرایه با اسمبلی واقعا برام زمانبر بود. دیباگ کردن و تریس کردن کار و رسوندن کار به جایی که همه چیز اوکی باشه خیلی سخت بود که بالاخره انجام شد.

چلنج آخر که باعث برطرف شدن یکسری باگ ها هم شد و در آخر آرایه رو هم چاپ کردم ...

var arr = [];
var i = 0;
while( i < 10 ) {
	var a = [];

	var b = "abbas "+i;

	a['id'] = i;
	a['name'] = b;

	arr[i] = a;
	i++;
}

print( arr );

push %ebp
mov %esp,%ebp
sub $,%esp
sub $,%esp
call do_fn_create_array 0x647de29a
add $,%esp
mov %eax,-12(%ebp)
mov -12(%ebp),%eax
mov %eax,-4(%ebp)
mov 0x0,%eax
mov %eax,-20(%ebp)
movb $0x2,-24(%ebp)
lea -24(%ebp),%eax
mov %eax,-16(%ebp)
mov -16(%ebp),%eax
push %eax
mov 0xa,%eax
mov %eax,-28(%ebp)
movb $0x2,-32(%ebp)
lea -32(%ebp),%eax
pop %ecx
mov  0x4(%eax),%eax
mov  0x4(%ecx),%ecx
cmp %eax,%ecx
mov $0x0,%eax
setl %al
mov %eax,-36(%ebp)
movb $0x2,-40(%ebp)
lea -40(%ebp),%eax
mov  0x4(%eax),%eax
test %eax,%eax
je $
sub $,%esp
call do_fn_create_array 0x647de226
add $,%esp
mov %eax,-52(%ebp)
mov -52(%ebp),%eax
mov %eax,-44(%ebp)
mov 0x57f321cc,%eax
mov %eax,-60(%ebp)
movb $0x2,-64(%ebp)
lea -64(%ebp),%eax
push %eax
mov -16(%ebp),%eax
pop %ecx
sub $,%esp
mov %eax,0(%esp)
mov %ecx, %eax
mov %eax,4(%esp)
call do_fn_add 0x647dcadc
add $,%esp
mov %eax,-56(%ebp)
mov -44(%ebp),%eax
sub $,%esp
mov %eax,0(%esp)
mov 0x57f321d7,%eax
mov %eax,-68(%ebp)
movb $0x2,-72(%ebp)
lea -72(%ebp),%eax
mov %eax,4(%esp)
call array_get 0x647dc62e
add $,%esp
sub $,%esp
mov %eax,0(%esp)
mov -16(%ebp),%eax
mov %eax,4(%esp)
call set_val 0x647dc853
add $,%esp
mov -44(%ebp),%eax
sub $,%esp
mov %eax,0(%esp)
mov 0x57f321de,%eax
mov %eax,-76(%ebp)
movb $0x2,-80(%ebp)
lea -80(%ebp),%eax
mov %eax,4(%esp)
call array_get 0x647dc5d5
add $,%esp
sub $,%esp
mov %eax,0(%esp)
mov -56(%ebp),%eax
mov %eax,4(%esp)
call set_val 0x647dc7fa
add $,%esp
mov -4(%ebp),%eax
sub $,%esp
mov %eax,0(%esp)
mov -16(%ebp),%eax
mov %eax,4(%esp)
call array_get 0x647dc585
add $,%esp
sub $,%esp
mov %eax,0(%esp)
mov -44(%ebp),%eax
mov %eax,4(%esp)
call set_val 0x647dc7aa
add $,%esp
mov -16(%ebp),%eax
sub $,%esp
mov %eax,0(%esp)
call do_fn_plus_plus 0x647dc993
add $,%esp
jmp  $
sub $,%esp
mov -4(%ebp),%eax
mov %eax,0(%esp)
call print 0x647dc88e
add $,%esp
leave
ret
[0:[id:0,name:abbas 0],1:[id:1,name:abbas 1],2:[id:2,name:abbas 2],3:[id:3,name:abbas 3],4:[id:4,name:abbas 4],5:[id:5,name:abbas 5],6:[id:6,name:abbas 6],7:[id:7,name:abbas 7],8:[id:8,name:abbas 8],9:[id:9,name:abbas 9]]