PASM (Parrot Assembly Language) এ subroutines এবং functions প্রোগ্রামে কোডের পুনঃব্যবহারযোগ্য অংশ হিসেবে ব্যবহৃত হয়। একে subroutine বা function হিসেবে ডাকা হলেও, পার্থক্য হতে পারে নির্দিষ্ট ভাষার ব্যবহারে। তবে, PASM এ subroutine বা function এর ব্যবহারের ধারণা একে অপরের কাছাকাছি।
PASM ভাষায় subroutines এবং functions কল করার জন্য নির্দিষ্ট কৌশল রয়েছে।
PASM-এ Subroutines কল করার পদ্ধতি
Subroutines হল এমন কোডের ব্লক যা একাধিক জায়গায় ব্যবহার করা যেতে পারে এবং অন্য অংশের কোডকে পরিষ্কার ও সহজ করতে সহায়তা করে। প্যারট ভার্চুয়াল মেশিনে subroutine কল করার জন্য call এবং return কমান্ড ব্যবহৃত হয়।
Subroutine Declaration (ডিক্লেয়ারেশন)
একটি subroutine শুরু করতে .sub কমান্ড ব্যবহার করা হয় এবং শেষ করতে .end কমান্ড ব্যবহার করা হয়।
Subroutine Call (কল করা)
যখন একটি subroutine কল করতে চান, তখন call ইনস্ট্রাকশন ব্যবহার করা হয়। যখন subroutine শেষ হয়, তখন return কমান্ড ব্যবহার করা হয় যাতে এক্সিকিউশন মূল প্রোগ্রামে ফিরে আসে।
PASM-এ Subroutine উদাহরণ
.sub add_numbers
load $P0, 5 # Load 5 into register $P0
load $P1, 7 # Load 7 into register $P1
add $P2, $P0, $P1 # Add $P0 and $P1, store result in $P2
print $P2 # Print result
return # Return from subroutine
.end
.sub main
call add_numbers # Call the add_numbers subroutine
return # Return from main subroutine
.endব্যাখ্যা:
add_numbersনামে একটি subroutine তৈরি করা হয়েছে, যা দুটি নম্বর যোগ করে এবং ফলাফল আউটপুট হিসাবে প্রিন্ট করে।mainsubroutine থেকেadd_numbersকল করা হয়েছেcallকমান্ডের মাধ্যমে।returnকমান্ডটি কলের পরে কোডের নির্বাহকে মূল (main) প্রোগ্রামে ফিরিয়ে নিয়ে আসে।
Functions কল করার পদ্ধতি
PASM-এ function এবং subroutine এর মধ্যে পার্থক্য খুব কম। তবে একটি function সাধারণত কোনো মান (value) ফেরত (return) করে। এ ক্ষেত্রে return মানটি ব্যবহার করে ফিরিয়ে নেওয়া হয়।
Function Declaration (ডিক্লেয়ারেশন)
একটি function ডিফাইন করতে .sub ব্যবহার করা হয়, এবং এটি মান ফেরত দেওয়ার জন্য return নির্দেশিকা ব্যবহৃত হয়।
Function Call (কল করা)
ফাংশন কল করার সময় call ইনস্ট্রাকশন ব্যবহার করা হয় এবং ফিরতি মান (return value) একটি রেজিস্টারে সংরক্ষণ করা হয়।
PASM-এ Function উদাহরণ
.sub add_numbers
load $P0, 5 # Load 5 into register $P0
load $P1, 7 # Load 7 into register $P1
add $P2, $P0, $P1 # Add $P0 and $P1, store result in $P2
return $P2 # Return the result in $P2
.end
.sub main
call add_numbers # Call the add_numbers function
print $P0 # Print the returned value
return
.endব্যাখ্যা:
add_numbersfunction দুটি সংখ্যাকে যোগ করে এবং ফলাফল$P2এ সংরক্ষণ করে, পরেreturn $P2দিয়ে মানটি ফিরিয়ে দেয়।mainসাবরুটিনেcall add_numbersফাংশনটি কল করা হয়েছে এবং তারপরprint $P0দিয়ে ফিরে আসা মান প্রিন্ট করা হয়েছে।
Return Values
PASM-এ return values সাধারণত রেজিস্টারে সংরক্ষিত হয়। যখন আপনি একটি ফাংশন বা সাবরুটিন থেকে কোন মান ফেরত দিতে চান, তখন return এর মাধ্যমে সেই মান রেজিস্টারে ফেরত পাওয়া যায়। উদাহরণস্বরূপ:
return $P2 # returns the value in register $P2ফাংশন ও সাবরুটিনের ব্যবহারে পার্থক্য
- Subroutine: সাধারণত কোন মান ফেরত দেয় না। এটি শুধুমাত্র কোডের পুনঃব্যবহারযোগ্য অংশ হিসেবে ব্যবহৃত হয়।
- Function: কোন মান বা আউটপুট ফেরত দেয় এবং এটি মূলত রেজিস্টারে সেই মান রেখে দেয়, যেটি অন্য অংশে ব্যবহৃত হতে পারে।
সারাংশ
PASM ভাষায় subroutine এবং function হল পুনঃব্যবহারযোগ্য কোড ব্লক যা এক্সিকিউশন চলাকালীন বিভিন্ন জায়গায় কল করা যেতে পারে। call কমান্ডের মাধ্যমে একটি সাবরুটিন বা ফাংশন কল করা হয় এবং return দিয়ে তার আউটপুট বা পরবর্তী এক্সিকিউশনে ফিরে আসা হয়। Subroutine সাধারণত কোনো মান ফেরত দেয় না, তবে function একটি মান ফেরত দিতে পারে।
Read more