ইন সমাবেশ MIPS , সেখানে স্ট্যাকের পয়েন্টার একটি খাতা, এবং ফ্রেম পয়েন্টার জন্য আরেকটি রেজিস্টার কর হয়। ফ্রেম পয়েন্টার কী এবং এর উদ্দেশ্য কী? এটি স্ট্যাক পয়েন্টার থেকে কীভাবে আলাদা?
ইন সমাবেশ MIPS , সেখানে স্ট্যাকের পয়েন্টার একটি খাতা, এবং ফ্রেম পয়েন্টার জন্য আরেকটি রেজিস্টার কর হয়। ফ্রেম পয়েন্টার কী এবং এর উদ্দেশ্য কী? এটি স্ট্যাক পয়েন্টার থেকে কীভাবে আলাদা?
উত্তর:
এমআইপিএস সমাবেশে, স্ট্যাক পয়েন্টারটি স্ট্যাকের শীর্ষে নির্দেশ করে। আপনি যখন স্ট্যাকের জন্য স্থান বরাদ্দ করেন, স্ট্যাক পয়েন্টার ($ স্প) ফ্রি মেমরিটিতে নির্দেশ করে।
এমআইপিএস অ্যাসেমব্লিতে সাব্রোটিন কল করার সময় (সেই দিনগুলিতে নিবন্ধগুলি একটি প্রিমিয়ামে ছিল - ভিত্তিক পরামিতিগুলি রেজিস্ট্রেশন করান যেখানে প্রচলিত ছিল), কেউ স্ট্যাকটিতে প্যারামিটারগুলি লেখেন এবং তারপরে স্ট্যাক পয়েন্টারটি অগ্রসর করেন।
যখন পদ্ধতিটি শুরু হয়, তখন কোনও পরামিতি অফসেটে থাকতে পারে 16($sp)
। তবে, ভেরিয়েবলগুলি স্ট্যাকের উপর স্থাপন করা হওয়ায়, স্ট্যাক পয়েন্টারটি সরানো হয় এবং একই পরামিতিটি এখন 24($sp)
পরিবর্তে অবস্থিত হতে পারে । এটি কোডটিকে কিছুটা বিভ্রান্ত করতে পারে।
ফ্রেম পয়েন্টার ($ fp) স্ট্যাক ফ্রেমের শুরুতে নির্দেশ করে এবং সাব্রোটাইন কলের সময়কালের জন্য সরানো হয় না। এটি স্ট্যাক ফ্রেমের গোড়ায় নির্দেশ করে এবং সাব্রোটিনে যে পরামিতিগুলি প্রবেশ করা হয় তা ফ্রেম পয়েন্টারটির সাথে সম্পর্কিত স্থির স্থানে থাকে।
বুঝতে পারুন যে ফ্রেম পয়েন্টারটি সাব্রোটিন কলগুলি সংশোধন করে পুনরায় সংরক্ষণ করতে হবে।
আরও পড়া:
%ebp
x86 কলিং-কনভেনশনে 'বেস পয়েন্টার' রেজিস্ট্রারের প্রচলিত ব্যবহারের মতোই এটি একই জিনিস ? (আমি এই সমস্ত কিছুর জন্য নতুন, তবে এটি MOV 8(%ebp), %eax
Realize that the frame pointer will need to be stored and restored with subroutine calls that modify it.
অর্থ কী তা পুরোপুরি পরিষ্কার নয়