স্ট্যাকের আচরণ (বড় হওয়া বা বাড়তে থাকা) অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (এবিআই) এবং কল স্ট্যাক (ওরফে অ্যাক্টিভেশন রেকর্ড) কীভাবে সংগঠিত হয় তার উপর নির্ভর করে।
সারা জীবন একটি প্রোগ্রাম ওএসের মতো অন্যান্য প্রোগ্রামের সাথে যোগাযোগের জন্য বাধ্য bound একটি প্রোগ্রাম অন্য প্রোগ্রামের সাথে কীভাবে যোগাযোগ করতে পারে তা এবিআই নির্ধারণ করে।
বিভিন্ন আর্কিটেকচারের স্ট্যাকটি কোনওভাবেই বাড়তে পারে তবে কোনও স্থাপত্যের জন্য এটি সামঞ্জস্যপূর্ণ হবে। দয়া করে এই উইকির লিঙ্কটি পরীক্ষা করুন। তবে, স্ট্যাকের বৃদ্ধি সিদ্ধান্ত নিয়েছে সেই আর্কিটেকচারের এবিআই।
উদাহরণস্বরূপ, আপনি যদি এমআইপিএস এবিআই নেন, কল স্ট্যাকটি নীচে হিসাবে সংজ্ঞায়িত করা হয়েছে।
আসুন সেই ফাংশনটি 'fn1' কল করে 'fn2' consider এখন 'fn2' দ্বারা দেখা স্ট্যাক ফ্রেমটি নিম্নরূপ:
direction of | |
growth of +---------------------------------+
stack | Parameters passed by fn1(caller)|
from higher addr.| |
to lower addr. | Direction of growth is opposite |
| | to direction of stack growth |
| +---------------------------------+ <-- SP on entry to fn2
| | Return address from fn2(callee) |
V +---------------------------------+
| Callee saved registers being |
| used in the callee function |
+---------------------------------+
| Local variables of fn2 |
|(Direction of growth of frame is |
| same as direction of growth of |
| stack) |
+---------------------------------+
| Arguments to functions called |
| by fn2 |
+---------------------------------+ <- Current SP after stack
frame is allocated
এখন আপনি দেখতে পাবেন স্ট্যাকটি নীচের দিকে বাড়ছে। সুতরাং, যদি ভেরিয়েবলগুলি ফাংশনের স্থানীয় ফ্রেমে বরাদ্দ করা হয় তবে ভেরিয়েবলের ঠিকানাগুলি নীচের দিকে বৃদ্ধি পায়। সংকলক মেমরি বরাদ্দের জন্য ভেরিয়েবলের ক্রম সম্পর্কে সিদ্ধান্ত নিতে পারে। (আপনার ক্ষেত্রে এটি 'q' বা 's' হতে পারে যা প্রথমে স্ট্যাক মেমরি বরাদ্দ করা হয় But তবে, সাধারণত সংকলকটি ভেরিয়েবলগুলি ঘোষণার আদেশ অনুসারে স্ট্যাক মেমরি বরাদ্দ করে)।
তবে অ্যারেগুলির ক্ষেত্রে, বরাদ্দটির কেবলমাত্র একক পয়েন্টার থাকে এবং মেমরিটি বরাদ্দ করা প্রয়োজন আসলে একটি একক পয়েন্টার দ্বারা নির্দেশিত হবে। একটি অ্যারের জন্য মেমরিটি সামঞ্জস্যপূর্ণ হওয়া দরকার। সুতরাং, স্ট্যাক যদিও নীচের দিকে বৃদ্ধি পায় তবে অ্যারেগুলির জন্য স্ট্যাকটি বড় হয়।