Assembly Language প্রোগ্রামিংয়ে Parameter Passing এবং Local Variable Management স্ট্যাক ব্যবহার করে ফাংশনের মধ্যে ডেটা স্থানান্তর এবং লোকাল ভেরিয়েবল সংরক্ষণের পদ্ধতি নির্দেশ করে। স্ট্যাক ফ্রেম এই উদ্দেশ্যে ব্যবহৃত হয়, যেখানে ফাংশনের প্যারামিটার এবং লোকাল ভেরিয়েবল সংরক্ষিত থাকে।
Parameter Passing (প্যারামিটার পাসিং):
ফাংশন কলের সময় প্যারামিটার পাস করার জন্য স্ট্যাক ব্যবহৃত হয়। প্যারামিটার পাসিং-এর সাধারণ পদ্ধতিগুলি নিম্নরূপ:
স্ট্যাকের মাধ্যমে প্যারামিটার পাসিং:
- ফাংশন কলের আগে প্যারামিটারগুলি স্ট্যাকে
PUSHকরা হয়। - ফাংশনের মধ্যে, প্যারামিটারগুলি
BPবাSPরেজিস্টারের মাধ্যমে অ্যাক্সেস করা হয়। - ফাংশন শেষে স্ট্যাক পরিষ্কার করা হয়।
উদাহরণ:
; ফাংশন কলের আগে প্যারামিটার পাস করা MOV AX, 5 PUSH AX ; প্রথম প্যারামিটার হিসেবে ৫ পুশ করা CALL myFunction ; ফাংশন কল করা myFunction: PUSH BP ; পুরোনো BP সংরক্ষণ করা MOV BP, SP ; নতুন ফ্রেম পয়েন্টার সেট করা ; প্যারামিটার অ্যাক্সেস (BP + 4) দিয়ে প্যারামিটার অ্যাক্সেস করা যায় MOV AX, [BP + 4] ; প্রথম প্যারামিটার লোড করা ; ফাংশনের বডি POP BP ; পুরোনো BP পুনরুদ্ধার করা RET- ফাংশন কলের আগে প্যারামিটারগুলি স্ট্যাকে
Local Variable Management (লোকাল ভেরিয়েবল ব্যবস্থাপনা):
ফাংশনের লোকাল ভেরিয়েবলগুলো স্ট্যাক ফ্রেমের মধ্যে সংরক্ষিত থাকে। ফাংশন শুরুতে SP-এর মান কমিয়ে লোকাল ভেরিয়েবলগুলির জন্য স্থান তৈরি করা হয়।
- স্ট্যাক ফ্রেম তৈরি:
- ফাংশনের শুরুতে
BPরেজিস্টার ব্যবহার করে স্ট্যাক ফ্রেম তৈরি করা হয়। SPরেজিস্টার ব্যবহার করে লোকাল ভেরিয়েবলগুলির জন্য স্থান তৈরি করা হয়।
- ফাংশনের শুরুতে
লোকাল ভেরিয়েবল অ্যাক্সেস:
- লোকাল ভেরিয়েবল
BPরেজিস্টারের মানের সাথে নির্দিষ্ট অফসেট ব্যবহার করে অ্যাক্সেস করা হয়।
উদাহরণ:
myFunction: PUSH BP ; পূর্বের BP সংরক্ষণ করা MOV BP, SP ; নতুন ফ্রেম পয়েন্টার সেট করা SUB SP, 4 ; লোকাল ভেরিয়েবলের জন্য ৪ বাইট সংরক্ষণ ; লোকাল ভেরিয়েবল ব্যবহার (BP - 4) দিয়ে লোকাল ভেরিয়েবল অ্যাক্সেস করা যায় MOV [BP - 4], AX ; লোকাল ভেরিয়েবল সংরক্ষণ ; ফাংশনের বডি MOV SP, BP ; স্ট্যাক পয়েন্টার পুনরুদ্ধার POP BP ; পূর্বের BP পুনরুদ্ধার করা RET- লোকাল ভেরিয়েবল
Parameter Passing এবং Local Variable Management এর প্রক্রিয়া:
- ফাংশন কলের আগে প্যারামিটার পাসিং: প্যারামিটার স্ট্যাকে
PUSHকরা হয়। - ফ্রেম সেটআপ: ফাংশন শুরুর সময়
BPসংরক্ষণ এবং সেট করা হয়। - লোকাল ভেরিয়েবল সংরক্ষণ:
SP-এর মান কমিয়ে লোকাল ভেরিয়েবলের জন্য স্থান তৈরি করা হয়। - ফাংশন শেষে স্ট্যাক পরিষ্কার:
SPএবংBPএর পূর্বের মান পুনরুদ্ধার করা হয় এবংRETনির্দেশনা দিয়ে ফাংশন শেষ হয়।
সারসংক্ষেপ
Parameter Passing এবং Local Variable Management ফাংশনের কার্যপ্রণালী এবং ডেটা সংরক্ষণের জন্য Assembly Language-এ স্ট্যাক ব্যবহার করে। প্যারামিটার পাসিং-এর জন্য স্ট্যাকে PUSH এবং POP ব্যবহার করা হয়, এবং লোকাল ভেরিয়েবল ব্যবস্থাপনার জন্য BP এবং SP রেজিস্টারের মাধ্যমে স্ট্যাক ফ্রেম তৈরি করা হয়। এই প্রক্রিয়াগুলি ফাংশন কল এবং রিটার্নের সময় সঠিক ডেটা অ্যাক্সেস এবং ব্যবস্থাপনা নিশ্চিত করে।
Read more