اسمبلر گنو
اسمبلر گنو که به اختصار GAS یا AS شناخته میشود، اسمبلر است که توسط پروژه GNU استفاده شدهاست. گنو اسمبلر، back-end پیش فرض گنو کامپایلر(gcc) است. این برای اسمبل کردن سیستم عامل گنو و هسته لینوکس و نرمافزارهای دیگر مورد استفاده قرار میگیرد. گنو اسمبلر بخشی از بسته GNU Binutils است.
توسعهدهنده(ها) | GNU Project |
---|---|
انتشار پایدار | 2.29.1
۲۵ سپتامبر ۲۰۱۷ |
نوشتهشده با | C |
بنسازه رایانش | Cross-platform |
گونه | Assembler |
پروانه | GNU General Public License v3 |
وبگاه |
کد اجرایی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، همانند بسیاری از اسمبلرهای دیگر، از این سینتکس پشتیبانی نمیکند را یک نقص میدانند.
با این حال، از نسخه ۲٫۱۰، سینتکس اینتل را میتوان از طریق استفاده از دستورالعمل .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 –