PASM (Parrot Assembly Language) হল Parrot Virtual Machine (PVM)-এর জন্য ডিজাইন করা একটি অ্যাসেম্বলি ভাষা। এটি Parrot VM এর কমান্ড বা ইনস্ট্রাকশন এক্সিকিউশন কন্ট্রোল করতে ব্যবহৃত হয় এবং প্যারট ভার্চুয়াল মেশিনে কোড লেখার জন্য একটি সহজ ভাষা হিসেবে কাজ করে। PASM মূলত একটি কমপাইলার-নির্ভর ভাষা, যেখানে কোড সোজা PVM-এ কম্পাইল হয়ে চলে যায়।
PASM Syntax
PASM এর সিনট্যাক্স অত্যন্ত সোজা এবং এটি মূলত নিম্নলিখিত উপাদানগুলো দিয়ে গঠিত:
ইনস্ট্রাকশন (Instruction):
PASM ইনস্ট্রাকশনগুলি প্যারট ভার্চুয়াল মেশিনের জন্য নির্দিষ্ট কমান্ড। এই কমান্ডগুলি ভেরিয়েবল এবং রেজিস্টার এর মান নিয়ে কাজ করে।উদাহরণ:
load $P0, 'hello.pir'এখানে,
loadহল একটি ইনস্ট্রাকশন,$P0হল একটি রেজিস্টার এবং'hello.pir'হল একটি আর্গুমেন্ট যা পার্স করা হবে।- রেজিস্টার (Register):
PASM-এ ভেরিয়েবল বা ডেটার স্টোরেজ একককে রেজিস্টার বলা হয়। সাধারণত, রেজিস্টার গুলি$P0,$P1,$P2, ইত্যাদি হিসেবে ব্যবহৃত হয়। লেবেল (Label):
লেবেলগুলি একটি নির্দিষ্ট অবস্থানে কোড পরিচালনা বা ডাইরেক্ট করতে ব্যবহৃত হয়। এটি সাধারণত একটি নাম হিসেবে ব্যবহৃত হয় এবং প্রোগ্রামের একটি পয়েন্ট হিসেবে কাজ করে।উদাহরণ:
start: ... jump startঅপার্যান্ড (Operand):
একটি ইনস্ট্রাকশন যার মাধ্যমে কমান্ডের সাথে যুক্ত মান বা তথ্য সরবরাহ করা হয়। যেমন: লোড, স্টোর, যোগ, বিয়োগ ইত্যাদি অপারেশন।উদাহরণ:
add $P0, $P1, $P2কমেন্ট (Comment):
PASM-এ মন্তব্য লিখতে#চিহ্ন ব্যবহৃত হয়। এতে আপনি কোডের ব্যাখ্যা লিখতে পারেন যা প্রোগ্রামিং লজিকের বাইরে।উদাহরণ:
# This is a comment
PASM Structure
PASM-এ একটি সাধারণ প্রোগ্রামের কাঠামো বা স্ট্রাকচার নিম্নরূপ:
- ইনস্ট্রাকশন ও লেবেলগুলির সাজানো অংশ:
PASM-এ সাধারণত কোড ইনস্ট্রাকশনগুলি ধারাবাহিকভাবে একে অপরের পরে চলে। যেগুলি লেবেল বা জাম্পিং পয়েন্ট দ্বারা ভেঙে দেওয়া যেতে পারে। ফাংশন (Subroutines):
PASM-এ বিভিন্ন ধরনের সাবরুটিন বা ফাংশন ব্যবহার করা হয় যা কোডের পুনঃব্যবহারযোগ্য অংশ হিসেবে কাজ করে। এই ফাংশনগুলোcallএবংreturnঅপারেশন দিয়ে ব্যবহার করা হয়।উদাহরণ:
sub add_numbers add $P0, $P1, $P2 return endইনপুট এবং আউটপুট অপারেশন:
PASM-এ ইনপুট এবং আউটপুট অপারেশন হ্যান্ডল করার জন্য নির্দিষ্ট কমান্ড রয়েছে, যেমন ডেটা লোড বা আউটপুট প্রদর্শন।উদাহরণ:
print "Hello, Parrot!"নির্দেশিকা ও প্রোপার্টি (Directives and Properties):
প্যারট ভার্চুয়াল মেশিনের জন্য নির্দিষ্ট কিছু ডিরেকটিভ রয়েছে যা কোড কম্পাইল বা রান করার সময় প্রয়োজনীয় নির্দেশনা দেয়। এগুলোর মাধ্যমে সিস্টেমের প্রোপার্টি বা মেমরি অ্যাক্সেস কন্ট্রোল করা হয়।উদাহরণ:
.sub main # Main entry point .end
PASM Example Code
এখানে একটি সাধারণ PASM কোডের উদাহরণ দেওয়া হল:
# Simple PASM program to add two numbers
.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 (12)
return
.end
.sub main
call add_numbers # Call the add_numbers subroutine
return
.endPASM এর প্রধান উপাদান
load: রেজিস্টারে ডেটা লোড করা।add: দুইটি মান যোগ করা।print: আউটপুট প্রদর্শন করা।call: একটি সাবরুটিন বা ফাংশন কল করা।return: সাবরুটিন থেকে ফিরে আসা।
সারাংশ
PASM (Parrot Assembly Language) হল Parrot Virtual Machine এর জন্য ব্যবহৃত একটি অ্যাসেম্বলি ভাষা, যা সহজ, কার্যকরী এবং স্ক্রিপ্টিং ভাষার কম্পাইলেশন এবং এক্সিকিউশনের জন্য ব্যবহৃত হয়। এর সিনট্যাক্স এবং স্ট্রাকচার ইনস্ট্রাকশন, রেজিস্টার, লেবেল, অপার্যান্ড, এবং কমেন্ট দ্বারা গঠিত, যা সহজভাবে Parrot VM-এ কোডের কার্যকারিতা নিয়ন্ত্রণ করতে সাহায্য করে।
Read more