এগুলি উভয়ই সমান, এবং সংকলকটি কী করে তা দেখে আপনি কীভাবে এটি সন্ধান করতে পারেন (অপটিমাইজেশন উচ্চমাত্রায় সেট না করেও):
সংকলক (gcc 4.0) আপনার সাধারণ উদাহরণগুলিতে কী করে তা দেখুন:
1.c:
main(){ int var; while(int i < 100) { var = 4; } }
gcc -S 1.c
1. এস:
_main:
pushl %ebp
movl %esp, %ebp
subl $24, %esp
movl $0, -16(%ebp)
jmp L2
L3:
movl $4, -12(%ebp)
L2:
cmpl $99, -16(%ebp)
jle L3
leave
ret
2.c
main() { while(int i < 100) { int var = 4; } }
gcc -S 2.c
2. এস:
_main:
pushl %ebp
movl %esp, %ebp
subl $24, %esp
movl $0, -16(%ebp)
jmp L2
L3:
movl $4, -12(%ebp)
L2:
cmpl $99, -16(%ebp)
jle L3
leave
ret
এগুলি থেকে আপনি দুটি জিনিস দেখতে পারবেন: প্রথমত, কোড উভয় ক্ষেত্রে একই।
দ্বিতীয়ত, ভেরের জন্য স্টোরেজটি লুপের বাইরে বরাদ্দ করা হয়:
subl $24, %esp
এবং অবশেষে লুপের একমাত্র জিনিস হ'ল অ্যাসাইনমেন্ট এবং শর্ত পরীক্ষা করা:
L3:
movl $4, -12(%ebp)
L2:
cmpl $99, -16(%ebp)
jle L3
সম্পূর্ণরূপে লুপটি সরিয়ে না নিয়ে আপনি যতটা দক্ষ হিসাবে কাজ করতে পারেন।