سلام
الان سال هاست که کسی از assembly استفاده ی زیادی نمیکنه . مگر اینکه بخواد توی نوشتن سیستم عامل مشارکت داشته باشه .. یا همچین چیزایی .
دلایل بسیار زیادی وجود داره که دیگه کسی از اسمبلی استفاده نکنه ، اما دلایل نسبتا قانع کننده ای هم وجود داره که یه جاهایی ازش استفاده کنیم ..
یکی از بزرگ ترین بازدارنده های اسمبلی ، سینتکس و دردسر هاش ؛ و یکی از جذابیت هاش سرعت و دسترسی بسیار بالاست .
چطور میتونیم یه پل بین این دوتا داشته باشیم؟
اینجاست که high level assembly میاد به میدون .
زبانی که سینتکسی شبیه C و C++ داره ، ولی همون اسمبلیه سابقه :)
برای استفاده از این زبان ، میبایست کامپایلرش رو دانلود کنید .
از کجا؟ خیلی راحت اگه " hla compiler " رو جستجو کنید وب سایت هایی براتون بالا میان که از همهی اونها میشه hla رو دانلود کرد .
و در مورد محیط کد زدن ، پیشنهاد من نصب افزونه hla در vscode هست ، اما خب یه دوستی زحمت کشیده یه ide برای این زبان طراحی کرده .
بعد از نصب ( که واقعا کاری نداره ) ، شروع می کنیم .
اولین گام - بررسی سینتکس
کد نمونهمون :
program hello;
#include("stdlib.hhf")
begin hello;
stdout.put("hello world");
end hello;
بریم بررسی کنیم .
ابتدای کار ، چیزی که به چشم میاد ، تقسیم بندی کد هاست .
بخش program جاییه که داخل اون متغیر ها تعریف و کتابخونه ها وارد میشن .
بخش begin جاییه که کد های اصلی زده میشن و به عبارتی الگوریتم نوشته میشه .
end هم که معلومه ، میگه برنامه تموم شد.( میبینید؟ اسمبلی هنوز همون اسمبلیه 😂)
جلوی هر کدوم از یک بخش ها یه شناسه میبینید که چیز مسخره ای هم هست انصافا ؛ ولی چه کنیم? تحمل کنید ...
باید برای هر بخش ، شناسه ها باهم مساوی باشن ، اما اینکه شناسه چی باشه ( که اینجا همون hello هست ) دستخودتونه .
توی این زبان هم مثل خیلی زبان های دیگه اکثر کد ها با ; تموم میشن ( به جز include و if و... )
توی خط دوم برنامه ، ما کتابخونه ای رو با نام stdlib وارد کردیم که بهمون اجازه میده ورودی و خروجی استاندارد داشته باشیم .
بعد از این به بخش begin میرسیم .
(توی پرانتز این رو هم بگیم ، این سر خط رفتن ها و فاصله ها فقط برای خواناییه ، دقیقا مثل c و c++ )
اللقاعده میخوایم hello world چاپ کنیم ، پس به دستور خروجی احتیاج داریم .
دستور خروجی کجاست؟
پیش stdout از کتابخونه ی stdlib .
خیلی راحت
stdout.put("text")
تموم شد و رفت!
بعد هم که end رو میزنید و تمام .
حالا فقط باید فایل رو با پسوند hla ذخیره کنید ، بعد هم با استفاده از ترمینال و کامپایلرِ hla کامپایل کنید .
به همین راحتی ، شاخ اسمبلی رو شکستید!
توی مقاله ی بعد با همین عنوان ( منتها به جای قسمت 1 ، قسمت 2 ) ورودی گرفتن و تعریف انواع متغیر رو یادخواهیم گرفت .
روز و روزگار خوش..