اسمبلر گنو

**اسمبلر گنو** که به اختصار 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 کامنت با اسلش -ستاره آغاز و پایان می‌یابد: 
```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 &amp;amp; T به‌طور پیش فرض: 
```asm
.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، همانند بسیاری از اسمبلرهای دیگر، از این سینتکس پشتیبانی نمی‌کند را یک نقص می‌دانند.
&#x5B; *[[ویکی‌پدیا:شیوه‌نامه/واژه‌هایی که باید از آن‌ها دوری گزید|<span title="The material near this tag may use weasel words or too-vague attribution.<nowiki/&gt; (سپتامبر ۲۰۱۶)">بر اساس کدام</span>]]*
با این حال، از نسخه ۲٫۱۰، سینتکس اینتل را می‌توان از طریق استفاده از دستورالعمل `.intel_syntax` استفاده کرد.

## جستارهای وابسته
* toolchain گنو
* کتابخانه توصیفگر فایل باینری
* فهرست اسمبلرها

## منابع


## پیوند به بیرون
*
* کتابچه راهنمای گاز
* 
رده:ابزارهای برنامه‌نویسی یونیکس
رده:ابزارهای برنامه‌نویسی لینوکس
رده:نرم‌افزارهای پروژه گنو
رده:کامپایلرها و مفسرهای آزاد
رده:اسمبلرها
رده:صفحات با ترجمه بازبینی‌نشده