binary5
به نام خدا
در پست قبلی نوشتم که ماکرو دشمن زبان است و مانع از فهم اسمبلی می گردد کما اینکه زبانهای سطح بالا نیز همچون یک ماکرو رفتار می کنند و مانعی بزرگ بین برنامه نویس و زبان اسمبلی محسوب می شوند .
اما اگر خیلی اصرار دارید که از ماکرو استفاده کنید باید بدانید که بسیاری از کامپایلرهای زبان اسمبلی سیستم استاندارد برای تعریف ماکرو در اختیار کاربر قرار نمی دهند .
بدبختانه ماکروهای هر کامپایلر زبان اسمبلی با ماکروهای سایر کامپایلرهای اسمبلی ناسازگار است و ترجمه دستی نیز کاری دشوار و طاقت فرسا می باشد .
من اینجا اسم چند کامپایلر معروف زبان اسمبلی را می نویسم :
Masm
Nasm
Tasm
RosAsm
Fasm
GoAsm
هر کدام از این کامپایلرهای زبان اسمبلی سیستم منحصر به خودش را برای ماکرو تعریف کرده است .
اما از همه جالبتر ؛ RosAsm سعی کرده به عجیب ترین شکل ممکن ماکرو و ساختار را تعریف کند :
[ ]
علامت بالا در RosAsm برای تعیین ماکرو و ساختار و همترازی بکار می رود !!!
لذا بسیاری از مواقع ؛ برنامه نویس در تفسیر کد منبع برنامه ها ناخواسته مرتکب اشتباه می شود زیرا برای هر سه مورد از سیستم یکسان استفاده شده است که تشخیص را دشوار می کند .
سایر اسمبلرها نیز از سیستم گنگ و نامفهوم برای تعریف ماکرو استفاده می کنند .
به همین دلیل ؛ من خودم شخصا هرگز از ماکرو استفاده نمی کنم و ترجیح می دهم تمام کد منبع برنامه های اسمبلی را با زبان اسمبلی خالص تمیز استاندارد بین المللی سطح پایین بنویسم که شباهت فراوانی به دیس اسمبلی دارد .
من برای برنامه نویسی با زبان اسمبلی معمولا از RosAsm البته بدون ماکرو و از هگز ادیتورهایی همچون c32asm و Tiny hexer استفاده می کنم .
اصولا زیاد اهل برنامه نویسی نیستم بلکه ترجیح می دهم کدهای باینری را رمزگشایی نمایم .
حوصله برنامه نویسی ندارم و بازی کردن با کدهای زبان ماشین و آزمایش کردن هگز ادیتورها برایم آسانتر و جذاب تر است .
من ترجیح می دهم مهندسی معکوس کنم زیرا حس کنجکاوی ام را ارضا می کند .
اگر حال و حوصله داشته باشم برای برنامه نویسی با زبان ماشین ؛ از c32asm یا Tiny hexer استفاده می کنم .
برای رمزگشایی کدهای زبان ماشین از برنامه Spiro استفاده می کنم .
اگر می خواهید با کمترین تعداد کد اسمبلی ؛ برنامه بسازید و وقت تان هدر نرود باید از RosAsm استفاده کنید .
برای ساخت سیستم عامل نیز باید از Fasm استفاده کنید .
اگر نمی توانید از زبان سی پلاس پلاس دل بکنید بهتر است از Masm استفاده کنید !
فقط در صورت نیاز ؛ از ماکرو استفاده کنید
در استفاده از ماکرو زیاده روی نکنید و گرنه از زبان اسمبلی دور می شوید و مجددا به چاه ضلالت و گمراهی یعنی زبانهای سطح بالا سقوط می کنید .