دیس‌اسمبلر: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
جز Yamaha5 صفحهٔ Disassembler را به دیس‌اسمبلر منتقل کرد
ابرابزار، اصلاح املا، برچسب ویکی‌سازی
خط ۱:
{{ویکی‌سازی}}
Disassembler
دیس اسمبلر برنامه ای کامپیوتری است که زبان ماشین را به زبان اسمبلی ترجمه می کند،عملیات معکوس آن از یک اسمبلر است.
یک دیس اسمبلر با دی کامپایلر تفاوت هایی دارد که هدف یک زبان سطح بالا به جای زبان اسمبلی است.جداسازی قطعات،خروجی از یک اسمبلر اغلب برای انسان فرمت بندی شده است_قابلیت خواندن به جای مناسب بودن برای ورودی به اسمبلر،آن را عمدتا یک ابزار مهندسی معکوس می سازد.
 
'''دیس اسمبلر''' برنامه{{به انگلیسی|Disassembler}} ایبرنامه‌ای کامپیوتری است که زبان ماشین را به [[زبان اسمبلی]] ترجمه میمی‌کند، کند،عملیاتعملیات معکوس آن از یک اسمبلر است.
کد منبع زبان اسمبلی به طور کلی مجاز به استفاده از ثابت ها و نظرات برنامه نویس است.که اینها معمولا از کد زبان ماشین گردآوری شده توسط اسمبلر حذف می شود.در اینصورت،عامل دیس اسمبلر در کد ماشین، قطعات جداسازی تولید شده فاقد این ثبات ها و نظرات می گردد؛خروجی دیس اسمبل شده جدا دشوارتر می شود برای انسان که آن را به کد منبع تفسیر شده اصل ترجمه کند.برخی دیس اسمبلرها امکان استفاده از اطلاعات اشکال زدایی نمادین را در فایلهای شی(object file) مانندELF را می دهد.محاوره اسمبلر اجازه می دهد به کاربر انسان تا کاراکتر حافظه ای برای ارزشها یا مناطقی از کد در یک قسمت تعاملی تشکیل دهد.بینش انسان اعمال شده به فرایند جداسازی قطعات،اغلب به موازات خلاقیت انسان در روند نوشتن کد است.
یک دیس اسمبلر با دی کامپایلر تفاوت هاییتفاوت‌هایی دارد که هدف یک زبان سطح بالا به جای زبان اسمبلی است. جداسازی قطعات،خروجیقطعات، خروجی از یک اسمبلر اغلب برای انسان فرمت بندی شده است_قابلیت خواندن به جای مناسب بودن برای ورودی به اسمبلر،آناسمبلر، آن را عمدتا یک ابزار مهندسی معکوس می سازدمی‌سازد.
 
کد منبع زبان اسمبلی به طور کلی مجاز به استفاده از ثابت هاثابت‌ها و نظرات برنامه نویس است. که اینها معمولا از کد زبان ماشین گردآوری شده توسط اسمبلر حذف می شودمی‌شود. در اینصورت،عاملاینصورت، عامل دیس اسمبلر در کد ماشین، قطعات جداسازی تولید شده فاقد این ثبات هاثبات‌ها و نظرات میمی‌گردد؛ گردد؛خروجیخروجی دیس اسمبل شده جدا دشوارتر می شودمی‌شود برای انسان که آن را به کد منبع تفسیر شده اصل ترجمه کند. برخی دیس اسمبلرها امکان استفاده از اطلاعات اشکال زدایی نمادین را در فایلهای شی(object file) مانندELF را میمی‌دهد. دهد.محاوره اسمبلر اجازه می دهدمی‌دهد به کاربر انسان تا کاراکتر حافظه ایحافظه‌ای برای ارزشها یا مناطقی از کد در یک قسمت تعاملی تشکیل دهد. بینش انسان اعمال شده به فرایند جداسازی قطعات،اغلبقطعات، اغلب به موازات خلاقیت انسان در روند نوشتن کد است.
جداسازی قطعات یک علم دقیق نیست:در سیستم عامل هایCISC با دستور العمل متغیر عرض،ویا در صورت وجود کد خود متغیر،ممکن است برای یک برنامه واحد به دو یا تعداد بیشتری جداسازی قطعات معقول تر نیاز پیدا کنیم.تعیین دستورالعمل که در واقع مواجه شده است در طی یک اجرا از این برنامه ثبات قابل حل را به مشکل توقف شده کاهش می دهد.
 
جداسازی قطعات یک علم دقیق نیست:در سیستم عامل هایCISC با دستور العمل متغیر عرض،ویاعرض، ویا در صورت وجود کد خود متغیر،ممکنمتغیر، ممکن است برای یک برنامه واحد به دو یا تعداد بیشتری جداسازی قطعات معقول تر نیاز پیدا کنیم. تعیین دستورالعمل که در واقع مواجه شده است در طی یک اجرا از این برنامه ثبات قابل حل را به مشکل توقف شده کاهش می دهدمی‌دهد.
 
'''== مشکلات جداسازی قطعهقطعه‌ها ها'''==
 
نوشتن یک دی اسمبلر که به تولید کد که زمانی که جمع شده است تولید دقیق باینری اصلی را امکانامکان‌پذیر پذیرمی‌کند؛ می کند؛بابا این حال، اغلب تفاوت وجود دارد. این امر خواسته هایخواسته‌های در بازنمونگری از اسمبلر است. به عنوان مثال در اسمبلر هایاسمبلرهای x86x۸۶ یک انتخاب دلخواه بین دو کد دودویی برای چیزی به عنوان مثال "AX MOV، BX" طول می کشدمی‌کشد. اگر کد اصلی از انتخاب هایانتخاب‌های دیگر استفاده کند،کدکند، کد اصلی به سادگی نمی تواندنمی‌تواند در هر نقطه داده شده در زمان تکثیر شود. با این حال، حتی زمانی که جداسازی قطعات کاملا درست است تولید می شود،می‌شود، مشکلات باقی می ماندمی‌ماند در صورتی که برنامه نیاز به اصلاح داشته باشد. به عنوان مثال همان دستور پرش زبان ماشین را می توانمی‌توان با کد اسمبلی تولید کرد برای پرش به یک محل مشخص (برای مثال برای اجرای کد خاص)،یا، یا برای مثال به جست و خیز یا پرش بر روی یک شاخه نا خواسته یعنی بدون شرط. دی اسمبلر نمی تواندنمی‌تواند بفهمد که چه چیزی در نظر گرفته شده است و ممکن است از سینتکس استفاده کند،وکند، و ایجاد کند یک جداسازی قطعات یعنی دیس اسمبلی که باینری اصلی را بازتولید کند. با این حال، اگر یک برنامه نویس می خواهدمی‌خواهد برای اضافه کردن دستورات بین دستور پرش و مقصد آن، لازم است به درک عملیات این برنامه برای تعیین اینکه آیا پرش باید مطلق یا نسبی، یعنی، چه آن قسمت را باید در یک مکان ثابت باقی می ماند،می‌ماند، و یا می شودمی‌شود است نقل مکان کرد تا به عنوان پرش به هر دو دستورالعمل اصلی و اضافه شده است.
 
'''نمونه هایی==نمونه‌هایی از دیس اسمبلرها'''==
 
اسمبلر ممکن است به تنهایی و یا تعاملی باشد. یک دی اسمبلر مستقل به هنگام اجرا یک فایل زبان اسمبلی تولید میکندمی‌کند که می تواندمی‌تواند مورد بررسی قرار گیرد. یک تعاملی نشان می دهدمی‌دهد تاثیر دو گونه تغییر کاربر را فورا. به عنوان مثال، اسمبلر ممکن است در ابتدا نمی دانند که یک بخش از برنامه است که در واقع کد و درمان آن را به عنوان داده. در صورتی که کاربر مشخص می کندمی‌کند که در آن فعال است، در نتیجه کد جدا شده است، بلافاصله نشان داده شده است، اجازه می دهدمی‌دهد تا کاربر را به بررسی آن و برداشتن گام هایگام‌های بیشتر در همان اجرا. هر دیباگر تعاملی برخی از راه دیدن جداسازی قطعات از برنامه در حال debugged باشد. اغلب، ابزار جداسازی قطعات همان خواهد شد که به عنوان یک اسمبلر مستقل توزیع همراه با دیباگر بسته بندی شده. به عنوان مثال، objdump، بخشی از GNU Binutils هستند، به GDB دیباگر تعاملی مرتبط.
IDA
 
OllyDbg سطح اسمبلر 32۳۲ بیتی اشکالزدا تجزیه و تحلیل
OLIVER و SIMON شامل Disassembler هاDisassemblerها برای اسمبلر، گرفتند، کوبول، و PL / 1۱
 
== منابع ==
خط ۲۴:
http://en.wikipedia.org/wiki/Disassembler
 
<!--- رده‌بندی --->
[[رده:مقاله‌های ایجاد شده توسط ایجادگر]]