به نام خدا 


در پست قبلی نوشتم که ماکرو  دشمن زبان است و مانع از فهم اسمبلی می گردد کما اینکه زبانهای سطح بالا نیز همچون یک ماکرو رفتار می کنند و مانعی بزرگ بین برنامه نویس و زبان اسمبلی محسوب می شوند . 



اما اگر خیلی اصرار دارید که از ماکرو استفاده کنید باید بدانید که بسیاری از کامپایلرهای زبان اسمبلی  سیستم استاندارد برای تعریف ماکرو  در اختیار کاربر قرار نمی دهند . 



بدبختانه ماکروهای هر کامپایلر زبان اسمبلی با ماکروهای سایر کامپایلرهای اسمبلی  ناسازگار است و ترجمه دستی نیز کاری دشوار و طاقت فرسا می باشد . 


من اینجا اسم چند کامپایلر معروف زبان اسمبلی را می نویسم : 



Masm


Nasm


Tasm


RosAsm


Fasm



GoAsm


هر کدام از این کامپایلرهای زبان اسمبلی سیستم منحصر به خودش را برای ماکرو  تعریف کرده است . 



اما از همه جالبتر ؛ RosAsm سعی کرده به عجیب ترین شکل ممکن  ماکرو و ساختار را تعریف کند : 


[    ]


علامت بالا در RosAsm برای تعیین ماکرو و ساختار و همترازی  بکار می رود !!! 




لذا بسیاری از مواقع  ؛ برنامه نویس در تفسیر کد منبع برنامه ها  ناخواسته  مرتکب اشتباه می شود زیرا برای هر سه مورد از  سیستم یکسان استفاده شده است که تشخیص را دشوار می کند . 


سایر اسمبلرها نیز  از سیستم گنگ و نامفهوم برای تعریف ماکرو استفاده می کنند . 



به همین دلیل ؛ من خودم شخصا  هرگز از ماکرو استفاده نمی کنم و ترجیح می دهم تمام کد منبع برنامه های اسمبلی را با زبان اسمبلی خالص تمیز استاندارد بین المللی سطح پایین  بنویسم که شباهت فراوانی به دیس اسمبلی دارد . 


من برای برنامه نویسی با زبان اسمبلی معمولا از RosAsm  البته بدون ماکرو و از هگز ادیتورهایی همچون c32asm و Tiny hexer  استفاده می کنم . 


اصولا زیاد اهل برنامه نویسی نیستم بلکه ترجیح می دهم کدهای باینری را رمزگشایی نمایم . 


حوصله برنامه نویسی ندارم و بازی کردن با کدهای زبان ماشین و آزمایش کردن  هگز ادیتورها برایم آسانتر و جذاب تر  است . 


من ترجیح می دهم مهندسی معکوس کنم زیرا حس کنجکاوی ام را ارضا می کند . 


اگر حال و حوصله داشته باشم برای برنامه نویسی با زبان ماشین ؛ از c32asm یا  Tiny hexer استفاده می کنم . 



برای رمزگشایی کدهای زبان ماشین از برنامه Spiro استفاده می کنم . 


اگر می خواهید با کمترین تعداد کد اسمبلی ؛ برنامه بسازید و وقت تان هدر نرود  باید از RosAsm استفاده کنید . 


برای ساخت سیستم عامل نیز باید از  Fasm  استفاده کنید . 


اگر نمی توانید از زبان سی پلاس پلاس  دل بکنید بهتر است از Masm استفاده کنید ! 



فقط در صورت نیاز ؛  از ماکرو استفاده کنید 


در استفاده از ماکرو  زیاده روی نکنید و گرنه  از زبان اسمبلی  دور می شوید و مجددا به چاه ضلالت و گمراهی  یعنی زبانهای سطح بالا  سقوط می کنید .