PEJI.IR

پیاده سازی 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]