دیساسمبلر: تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
LetsDoItBot (بحث | مشارکتها) تمیزکاری، + ویرایش با ماژول ابرابزار با استفاده از AWB |
Yamaha5Bot (بحث | مشارکتها) تمیزکاری با ویرایشگر خودکار فارسی |
||
خط ۹:
== مشکلات جداسازی قطعهها ==
نوشتن یک دی اسمبلر که به تولید کد که زمانی که جمع شده است تولید دقیق باینری اصلی را امکانپذیر میکند؛ با این حال، اغلب تفاوت وجود دارد. این امر خواستههای در بازنمونگری از اسمبلر است. به عنوان مثال در اسمبلرهای x۸۶ یک انتخاب دلخواه بین دو کد دودویی برای چیزی به عنوان مثال "AX MOV, BX" طول میکشد. اگر کد اصلی از انتخابهای دیگر استفاده کند، کد اصلی به سادگی نمیتواند در هر نقطه داده شده در زمان تکثیر شود. با این حال، حتی زمانی که جداسازی قطعات کاملاً درست است تولید میشود، مشکلات باقی میماند در صورتی که برنامه نیاز به اصلاح داشته باشد. به عنوان مثال همان دستور پرش زبان ماشین را میتوان با کد اسمبلی تولید کرد برای پرش به یک محل مشخص (برای مثال برای اجرای کد خاص)، یا برای مثال به جست و خیز یا پرش بر روی یک شاخه نا خواسته یعنی بدون شرط. دی اسمبلر نمیتواند بفهمد که چه چیزی در نظر گرفته شده است و ممکن است از سینتکس استفاده کند، و ایجاد کند یک جداسازی قطعات یعنی دیس اسمبلی که باینری اصلی را بازتولید کند. با این حال، اگر یک برنامهنویس میخواهد برای اضافه کردن دستورات بین دستور پرش و مقصد آن، لازم است به درک عملیات این برنامه برای تعیین اینکه آیا پرش باید مطلق یا نسبی، یعنی، چه آن قسمت را باید در یک مکان ثابت باقی میماند،
== نمونههایی از دیس اسمبلرها ==
اسمبلر ممکن است به تنهایی
IDA
|