اسمبلر گنو

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

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

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

تاریخچه

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

سینتکس کلی

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

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

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

کامنت گذاری

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

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

مشابه کامنت گذاری چند خطی در 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، همانند بسیاری از اسمبلرهای دیگر، از این سینتکس پشتیبانی نمی‌کند را یک نقص می‌دانند. با این حال، از نسخه ۲٫۱۰، سینتکس اینتل را می‌توان از طریق استفاده از دستورالعمل .intel_syntax استفاده کرد.[4][5][6]

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

منابع

  1. "The GNU Assembler".
  2. "The GNU Assembler - Assembler Directives".
  3. Red Hat Inc. "Using as". Retrieved Jan 10, 2013.
  4. "GNU Assembler News".
  5. "AT&T Syntax versus Intel Syntax". 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.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.