Foundationপ্রথম নীতি থেকে
LEVEL 3 · CPU Architecture

Stack Pointer

স্ট্যাক পয়েন্টার

Call stack-এর 'top'-এর ঠিকানা ধরে রাখা register। PUSH-এ কমে, POP-এ বাড়ে (stack নিচের দিকে বাড়ে) — function call-এর local variable, return address, saved register এখানেই থাকে।

also: SP, sp, rsp, esp

Memory-র নিচের অংশ সাধারণত code/data-র জন্য বরাদ্দ, উপরের অংশ stack-এর জন্য — stack উপর থেকে নিচের দিকে বাড়ে যাতে heap (নিচ থেকে উপরে বাড়ে) আর stack মাঝখানে যতটা সম্ভব জায়গা রেখে বিপরীত দিক থেকে আসে।

নামকরণ: x86-64-এ rsp, ARM64-এ sp (৩১টা সাধারণ register-এর বাইরে একটা স্বতন্ত্র register), RISC-V-এ x2/ABI নাম sp — সাধারণ register-এর মতোই হার্ডওয়্যার, শুধু convention অনুযায়ী এই ভূমিকায় ব্যবহৃত।

Function call-এ (CALL/JAL) return address আর argument-এর একটা অংশ stack-এ যায়, SP অনুযায়ী কমে; return-এ (RET) আবার বাড়ে।

Hardware SP-কে এনফোর্স করে না — এটা নিছক একটা ঠিকানা ধরে রাখা register, নিজে কোনো সীমা জানে না। Stack overflow ধরা পড়ে OS-এর বসানো একটা guard page-এ আঘাত করলে (page fault → segmentation fault), SP register নিজে সেই সুরক্ষা দেয় না।

Buffer overflow আক্রমণ SP-সংলগ্ন return address ওভাররাইট করে PC হাইজ্যাক করতে পারে — এই একই memory layout-ই দুর্বলতার উৎস।

x86-64-র System V ABI-তে leaf function-এর জন্য “red zone” (SP-র নিচে ১২৮ byte, sub rsp ছাড়াই ব্যবহারযোগ্য) — একটা compiler-convention optimization, hardware feature না।