এখানে এনাম সংজ্ঞা এবং একটি main
ফাংশন সহ একটি সাধারণ সি ফাইল রয়েছে :
enum days {MON, TUE, WED, THU};
int main() {
enum days d;
d = WED;
return 0;
}
এটি নিম্নলিখিত এলএলভিএম আইআর স্থানান্তর করে:
define dso_local i32 @main() #0 {
%1 = alloca i32, align 4
%2 = alloca i32, align 4
store i32 0, i32* %1, align 4
store i32 2, i32* %2, align 4
ret i32 0
}
%2
স্পষ্টতই d
পরিবর্তনশীল, যা এটি 2 প্রদান করে। %1
শূন্যটি সরাসরি ফিরে আসলে কী মিলবে ?
clang-9 -S -emit-llvm simple.c
main
( গডবোল্ট.আর্গ / জেড / কেইটিএস- গুলি ) এর আগে ইনিশিয়ালেশনের সাথে কিছু করার আছে । লিঙ্কটি দেখায় যে কীভাবে সমাবেশটি উত্সটিতে ম্যাপ করা হয়েছে
main
পরিবর্তন করেন তবে রহস্যজনক অতিরিক্ত পরিবর্তনশীল অদৃশ্য হয়ে যায়। মজার বিষয় হল, আপনি return
বিবৃতি সম্পূর্ণরূপে বাদ দিলে এটিও অদৃশ্য হয়ে যায় (যা main
সি এর জন্য বৈধ এবং সমতুল্য return 0;
)।
main
করেন যে int main(int argc, char **argv)
আপনি দেখতে argc
এবং argv
স্ট্যাকের অনুলিপি করেছেন, তবে রহস্যজনক শূন্য ভেরিয়েবলটি এগুলি ছাড়াও এখনও রয়েছে।