اسمبلر گنو

GNU Assembler
توسعه‌دهنده(ها)GNU Project
انتشار پایدار
2.29.1 / ۲۵ سپتامبر ۲۰۱۷؛ ۷ سال پیش (۲۰۱۷-25}})
نوشته‌شده باC
پلت‌فرمCross-platform
نوعAssembler
مجوزGNU General Public License v3
وبگاه

اسمبلر گنو که به اختصار GAS یا AS شناخته می‌شود، اسمبلر است که توسط پروژه GNU استفاده شده‌است. گنو اسمبلر، back-end پیش فرض گنو کامپایلر(gcc) است. این برای اسمبل کردن سیستم عامل گنو و هسته لینوکس و نرم‌افزارهای دیگر مورد استفاده قرار می‌گیرد. گنو اسمبلر بخشی از بسته GNU Binutils است.

کد اجراییas , GAS نامیده می‌شود که نام استاندارد یک اسمبلر یونیکس است. GAS یک برنامه چند سکویی است (روی سیستم عامل‌های مختلف کار می‌کند) و هر دو (GAS و AS)در تعدادی از معماری‌های کامپیوتری مختلف کار می‌کنند. GAS تحت مجوز عمومی GNU منتشر شده‌است، GAS نرم‌افزار آزاد است (نرم‌افزاری که بتوان روی آن تغییر ایجاد و به نام خود منتشر کرد).

تاریخچه

[ویرایش]

اولین نسخه GAS در سال ۱۹۸۶–۱۹۸۷ منتشر شد. دین السنر آن را برنامه‌نویسی کرد و از معماری VAX پشتیبانی می‌کرد.[۱]

سینتکس کلی

[ویرایش]

GAS از یک سینتکس کلی استفاده می‌کند که برای تمام معماری‌های پشتیبانی شده کار می‌کند. سینتکس کلی شامل سینتکس‌های اسمبلر و یک روش برای کامنت گذاری است.

دستورهای اسمبلی

[ویرایش]

GAS از دستورالعمل‌های اسمبلر استفاده می‌کند (که با نام ops pseudo شناخته می‌شود)، که نام هر دستور کلید کلمه عملکرد آن است که مشابه دستورالعمل‌های preprocessor در زبان برنامه‌نویسی C رفتار می‌کنند. در حالی که اکثر دستورالعمل‌های اسمبلر بدون توجه به معماری هدف کار می‌کنند، برخی از دستورهای وابسته به معماری که در آن اجرا می‌شوند هستند.[۲]

کامنت گذاری

[ویرایش]

GAS از دو سبک کامنت گذاری پشتیبانی می‌کند:[۳]

کامنت‌های چند خطی

[ویرایش]

مشابه کامنت گذاری چند خطی در C کامنت با اسلش -ستاره آغاز و پایان می‌یابد:

/*
comment
*/

کامنت تک خطی

[ویرایش]

کامنت‌های تک خط چند فرمت مختلف دارند که در معماری‌های مختلف متفاوت است.

  • نمادهای هش (#) برای سیستم معماری‌های مقابل استفاده می‌شود: i386، x86-64، i960، 68HC11، 68HC12، VAX , V850، M32R، PowerPC، MIPS و M680x0.
  • Semicolons (؛) در مورد: خانواده AMD 29k , ARC، خانواده H8 / 300، HPPA , PDP-11، picoJava، موتورولا و M32C استفاده می‌شود.
  • در علامت (@) در پلت فرم ARM استفاده می‌شود.
  • اسلش دوتایی (//) در پلت فرم AArch64 استفاده می‌شود.
  • یک نوار عمودی (|) برای نماد کامنت هنگام اسمبل کردن روی 680x0 استفاده می‌شود.
  • یک علامت تعجب (!) در پلت فرم RENSAS SH برای کامنت استفاده می‌شود.

استفاده

[ویرایش]

GNU Assembler به عنوان back-end برای یک مجموعه کامپایلر محبوب یعنی GCC، در کامپایل نرم‌افزارهای open source بسیار کاربرد دارد. GAS اغلب به عنوان اسمبلر در سیستم عامل‌های گنو / لینوکس در کنار سایر نرم‌افزارهای GNU استفاده می‌شود. نسخه اصلاح شده GAS همچنین می‌تواند در بسته‌های برنامه‌نویسی و توسعه Macintosh ازسیستم عامل MacOS پیدا شود.

برنامه‌های نمونه

[ویرایش]

یک برنامه "Hello, world!" برای لینوکس در IA-32 با استفاده از دستورات AT & T به‌طور پیش فرض:

.global _start

.text
_start:
movl  $4, %eax
movl  $1, %ebx
movl  $msg, %ecx
movl  $len, %edx
int   $0x80

movl  $1, %eax
movl  $0, %ebx
int   $0x80
.data
msg:
.ascii  "Hello, world!\n"
len =   . - msg

سینتکس اینتل

[ویرایش]

برنامه نویسانی که بیشتر به سینتکس اینتل عادت کرده‌اند این که اسمبلر در معماری x86 و x86-64، همانند بسیاری از اسمبلرهای دیگر، از این سینتکس پشتیبانی نمی‌کند را یک نقص می‌دانند. [ <span title="The material near this tag may use weasel words or too-vague attribution.<nowiki/> (سپتامبر ۲۰۱۶)">بر اساس کدام با این حال، از نسخه ۲٫۱۰، سینتکس اینتل را می‌توان از طریق استفاده از دستورالعمل .intel_syntax استفاده کرد.[۴][۵][۶]

جستارهای وابسته

[ویرایش]

منابع

[ویرایش]
  1. "The GNU Assembler".
  2. "The GNU Assembler - Assembler Directives". Archived from the original on 22 February 2012. Retrieved 21 January 2019.
  3. Red Hat Inc. "Using as". Archived from the original on 20 June 2011. Retrieved Jan 10, 2013.
  4. "GNU Assembler News".[پیوند مرده]
  5. "AT&T Syntax versus Intel Syntax". Archived from the original on 20 June 2011. Retrieved 28 July 2014.
  6. Ram Narayan (2007-10-17). "Linux assemblers: A comparison of GAS and NASM". IBM DeveloperWorks. Archived from the original on 3 Mar 2009. Retrieved 28 July 2014.

پیوند به بیرون

[ویرایش]
  1. "gnu.org". www.gnu.org (به انگلیسی). Retrieved 2019-01-21.