پیاده سازی for in
۱۴۰۰ آبان ۲۵, سهشنبه ساعت ۱۷:۲۰پیاده سازی for in
خب بالاخره این قسمت رو هم پیاده سازی کردم ... این قسمت خیلی سخت و زمانگیر بود. مغزمو کمی متلاشی کرد :-D
var arr = [];
var i = 0;
while( i < 10 ) {
var a = [];
var b = test()+i;
a['id'] = i;
a['name'] = b;
arr[i] = a;
i++;
}
for( var k,v in arr ) {
print(k);
print(" : ")
print(v);
print("\n");
}
push %ebp
mov %esp,%ebp
mov 0x583dd1ac,%eax
sub $,%esp
mov %eax,-4(%ebp)
movb $0x2,-8(%ebp)
lea -8(%ebp),%eax
sub $,%esp
mov %eax,0(%esp)
call do_fn_return 0x64794346
add $,%esp
jmp $
leave
ret
push %ebp
mov %esp,%ebp
sub $
,%esp
sub $,%esp
call do_fn_create_array 0x647952e5
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 0x64795271
add $,%esp
mov %eax,-52(%ebp)
mov -52(%ebp),%eax
mov %eax,-44(%ebp)
sub $,%esp
call test 0xffffff1e
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 0x64793aca
add $,%esp
mov %eax,-56(%ebp)
mov -44(%ebp),%eax
sub $,%esp
mov %eax,0(%esp)
mov 0x583dd1e6,%eax
mov %eax,-60(%ebp)
movb $0x2,-64(%ebp)
lea -64(%ebp),%eax
mov %eax,4(%esp)
call array_get 0x647935fb
add $,%esp
sub $,%esp
mov %eax,0(%esp)
mov -16(%ebp),%eax
mov %eax,4(%esp)
call set_val 0x64793841
add $,%esp
mov -44(%ebp),%eax
sub $,%esp
mov %eax,0(%esp)
mov 0x583dd1ed,%eax
mov %eax,-68(%ebp)
movb $0x2,-72(%ebp)
lea -72(%ebp),%eax
mov %eax,4(%esp)
call array_get 0x647935a2
add $,%esp
sub $,%esp
mov %eax,0(%esp)
mov -56(%ebp),%eax
mov %eax,4(%esp)
call set_val 0x647937e8
add $,%esp
mov -4(%ebp),%eax
sub $,%esp
mov %eax,0(%esp)
mov -16(%ebp),%eax
mov %eax,4(%esp)
call array_get 0x64793552
add $,%esp
sub $,%esp
mov %eax,0(%esp)
mov -44(%ebp),%eax
mov %eax,4(%esp)
call set_val 0x64793798
add $,%esp
mov -16(%ebp),%eax
sub $,%esp
mov %eax,0(%esp)
call do_fn_plus_plus 0x64793981
add $,%esp
jmp $
in for
mov -84(%ebp),%eax
mov 0x0,%eax
mov %eax,-88(%ebp)
movb $0x2,-92(%ebp)
lea -92(%ebp),%eax
mov %eax,-84(%ebp)
mov -84(%ebp),%eax
push %eax
sub $,%esp
mov -4(%ebp),%eax
mov %eax,-96(%ebp)
mov %eax,0(%esp)
call array_len 0x647936e2
add $,%esp
pop %ecx
mov 0x4(%eax),%eax
mov 0x4(%ecx),%ecx
cmp %eax,%ecx
mov $0x0,%eax
setl %al
test %eax,%eax
je $
sub $,%esp
mov -96(%ebp),%eax
mov %eax,0(%esp)
mov -84(%ebp),%eax
mov %eax,4(%esp)
call array_key 0x6479363b
add $,%esp
mov %eax,-76(%ebp)
sub $,%esp
mov -96(%ebp),%eax
mov %eax,0(%esp)
mov -84(%ebp),%eax
mov %eax,4(%esp)
call array_value 0x6479363b
add $,%esp
mov %eax,-80(%ebp)
sub $,%esp
mov -76(%ebp),%eax
mov %eax,0(%esp)
call print 0x647937bb
add $,%esp
sub $,%esp
mov 0x583dd21f,%eax
mov %eax,-100(%ebp)
movb $0x2,-104(%ebp)
lea -104(%ebp),%eax
mov %eax,0(%esp)
call print 0x64793794
add $,%esp
sub $,%esp
mov -80(%ebp),%eax
mov %eax,0(%esp)
call print 0x64793776
add $,%esp
sub $,%esp
mov 0x583dd231,%eax
mov %eax,-108(%ebp)
movb $0x2,-112(%ebp)
lea -112(%ebp),%eax
mov %eax,0(%esp)
call print 0x6479374f
add $,%esp
mov -84(%ebp),%eax
sub $,%esp
mov %eax,0(%esp)
call do_fn_plus_plus 0x64793813
add $,%esp
jmp $
leave
ret
0 : [id:0,name:aaaa0]
1 : [id:1,name:aaaa1]
2 : [id:2,name:aaaa2]
3 : [id:3,name:aaaa3]
4 : [id:4,name:aaaa4]
5 : [id:5,name:aaaa5]
6 : [id:6,name:aaaa6]
7 : [id:7,name:aaaa7]
8 : [id:8,name:aaaa8]
9 : [id:9,name:aaaa9]