اسمبلر گنو
توسعهدهنده(ها) | GNU Project |
---|---|
انتشار پایدار | 2.29.1
/ ۲۵ سپتامبر ۲۰۱۷ |
نوشتهشده با | 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
استفاده کرد.[۴][۵][۶]
جستارهای وابسته
[ویرایش]- toolchain گنو
- کتابخانه توصیفگر فایل باینری
- فهرست اسمبلرها
منابع
[ویرایش]- ↑ "The GNU Assembler".
- ↑ "The GNU Assembler - Assembler Directives". Archived from the original on 22 February 2012. Retrieved 21 January 2019.
- ↑ Red Hat Inc. "Using as". Archived from the original on 20 June 2011. Retrieved Jan 10, 2013.
- ↑ "GNU Assembler News".[پیوند مرده]
- ↑ "AT&T Syntax versus Intel Syntax". Archived from the original on 20 June 2011. Retrieved 28 July 2014.
- ↑ 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.
پیوند به بیرون
[ویرایش]- [۱]
- کتابچه راهنمای گاز
- لینوکس دستورات کاربری صفحه راهنما : the portable GNU assembler –