كنت مؤخرا تبحث عن وسيلة لشحن صورة مع قابل للتنفيذ دون الإشارة إلى الصورة كملف خارجي. الآن يمكنك أن تجادل إذا كانت فكرة جيدة بشكل عام، ولكن أن 039s قصة أخرى. وبما أنني وجدت القليل جدا من المعلومات عن هذا الموضوع وتحتاج إلى جمع المعلومات من مصادر مختلفة، وأختتم المهمة مع هذه الكتابة الشاملة عن الموضوع. الآليات الموصوفة هنا تنطبق على تضمين أي مورد - وليس فقط الصور - إلى برنامج ج قابل للتنفيذ. هناك طرق مختلفة لتضمين البيانات الثابتة العامة ضمن التطبيق. Let039s تبدأ مع مثال أساسي يجب أن تكون مألوفة: كل تطبيق هو مجرد مجموعة من شرائح البيانات المخزنة في ملف. على بنية الكمبيوتر الحديثة، يتكون كل تطبيق ثنائي من ثلاثة قطاعات رئيسية المكدس. البيانات والمدونة. وبدون الدخول في التفاصيل، تكون البيانات الثابتة - مثل سلاسل النصوص الثابتة - موجودة في الجزء المخصص للقراءة فقط من جزء البيانات من التطبيق الثنائي وسيعمل مترجم c على إنشاء منطقة ذاكرة تلقائيا. عند ترجمة السطر أعلاه مع غك - c - o mytext. o mytext. c وتفحص ملف الكائن مع أوبجدومب - t mytext. o you039ll العثور على قسم البيانات في ملف الكائن. والتي تقول أساسا: mystring039 هو كائن نص (ز) عالمي للقراءة فقط (O) ويمكن العثور عليه في الإزاحة 0x00 في ملف الكائن. للحصول على وصف مفصل لجميع القيم انظر رجل أوبجدومب. الآن حل واحد هو ببساطة كتابة التعليمات البرمجية في ج ويكون المترجم رعاية كل شيء باستخدام لترميز البيانات من ملف معين، أداة زكسد التي تأتي مع محرر نص فيم يمكن استخدامها: مخرجات زسد - i بيناريفيل C تشمل نمط الملف من ملف ثنائي معين ويكتب تعريف صفيف ثابت كامل اسمه بعد ملف الإدخال: استخدام هذا البديل تنتج كود C المحمولة ويعمل فقط (تم). على الجانب السلبي، فإنه يتطلب ما لا يقل عن خمسة أضعاف حجم البيانات الأصلية (0xNN، لكل البيانات الأصلية بايت) وتحتاج شفرة المصدر إلى تحديث في كل مرة تتغير البيانات الأصلية. في حين أن هذا النهج مفيد في بعض الحالات، يمكننا أن نفعل أفضل من ذلك. رابط غنو يمكن استخدامها لإنشاء ملفات الكائن مباشرة مع قسم. data مخصص مباشرة من أي ملف الإدخال. الأعلام السحرية هي - r لجعل ملف الكائن ريلوكاتابل و - b ثنائي لربط الملفات بتنسيق ثنائي غير عادي. يمكن ربط ملف الكائن الناتج example. o مع أي تطبيق، ببساطة مع غك نفسها. مثلا غك - o مياب myapp. c example. o. الآن آخر رابط مفقود هو الوصول إلى البيانات في example. o من c - رمز في myapp. c. إلقاء نظرة على إخراج الكائن ومقارنتها مع الإخراج أعلاه للكائن ميسترينغ. و .. g. data لتنامغت جزء يجب أن يرن جرس. يمكن الرجوع إلى هذا القسم من البيانات من رمز C ببساطة عن طريق استخدام: ويمكن حساب طول من أو ببساطة عن طريق الرجوع إلى عنوان بيناريكسامبلاجيزيزي. سوف رابط حل إشارة الخارجية عند ربط التطبيق والتطبيق سوف تستخدم البيانات تماما مثل نقطة ثابتة في شفرة المصدر. الآن للجزء صعبة: رابط غنو يتصرف بشكل مختلف اعتمادا على المنصة والهندسة المعمارية. تطبيقات مثيرة للاهتمام بالنسبة لي هي غنولوكس، أوسك و مينغو (عبر تجميع ويندوز الثنائيات على المضيف غنولوكس). مينغو كروس-كومبيلر يتصرف بالضبط تقريبا كما غنو-لد مع اختلاف بسيط واحد: لا يتضمن قسم البيانات أبرز تسطير: بيناريكسامبلاجستارت مقابل بيناريكسامبلاجستارت. غرامة، وهناك يذهب بعض من أناقة الحل، ولكن يتم التعامل مع هذه الحالة بسهولة مع إفديف. ومع ذلك، ماكوسكس مختلفة. ود التي يتم شحنها مع X - رمز يأتي من لفم الإصدار 2.7svn ولا يدعم - b ميزة الإدخال شكل. وعلاوة على ذلك، يمكن أن تشمل الملفات التنفيذية العالمية على أوسك تنسيقات ثنائية لأبنية مختلفة مع تنسيق قسم. data كونها مختلفة لكل بنية. قد تختلف محاذاة البيانات بين أبنية 32BIT و 64BIT و إنديانيس قد تختلف كذلك. وبالتالي فإن إنشاء قسم البيانات يجب أن يتم أثناء التجميع بدلا من مرحلة الربط. على أوسك ld039s ميزة الربط الثنائية تم نقلها إلى غك المخصصة، وهي متاحة عبر 039-seccreate039 الخيار: لإنشاء بناء عالمي للهندسة المعمارية إنتل، إضافة - arch i386 - arch x8664 إلى فوق الأمر. أوبجدومب هو أيضا أداة جنو التي لا تتوفر على أوسك. يمكنك فحص قسم البيانات باستخدام أوتول - s داتا إكسامبل باثتوكسكوتابل. انظر رجل أوتول للحصول على تفاصيل هناك. نظرا لطبيعة الثنائيات أوسك، الرجوع إلى قسم البيانات في c - رمز غير ممكن مع الخارجي خارج شار غير بسيط. الوصل لا يعرف أي الهندسة المعمارية التي سيتم استخدامها ولا يمكن أن توفر عنوانا. تنسيق ثنائي ماخ الذي يستخدم من قبل أوسك يحتاج إلى أن يتم تفتيشها في وقت التشغيل عندما يعرف العمارة وتعيين البيانات ذات الصلة بعد بدء تشغيل التطبيق. توفر أبل أبي للقيام بذلك الذي تم تعريفه في ملف رأس ماش-ogetsect. h. إذا كان لديك رمز X تثبيت يمكنك قراءة الوثائق على ذلك في الرجل جيتسكتبينام. حل يمكن أن يتم إلا سيكيون في وقت التشغيل بعد نقل قسم البيانات ويمكن القيام به عن طريق استدعاء جيتسكتبينام (). ومع ذلك هناك خدعة التي يمكنك استخدامها، لجعل هذا ضمنا. فإن القسم المتغير ميتا معترف به من قبل مترجم غك على أوسك. وتنتج نفس النتيجة كما يدعو جيسكتبينام () أدر. قصيرة من قراءة التعليمات البرمجية الفعلية، والمعلومات حول أوكس رابط الداخلية ليس من السهل أن تأتي من قبل. جيتسكتبينام () في الواقع يفتح الملف القابل للتنفيذ ويبحث في قسم البيانات ذات الصلة أثناء تشغيل التطبيق. قسم قد أو قد لا تكون بالفعل حلها في وقت الارتباط لهندسة معينة 1). تحديث (أكتوبر 2016 - بفضل يوجين جيرشنيك): على أحدث إصدارات أوسكماكوس التي تقوم بتشغيل الملفات التنفيذية مع أسلر. الدعوة إلى جيتسكتبينام يحتاج إلى استبداله مع جيتسكوداتا 2). ومع ذلك، لا تتوفر واجهة برمجة التطبيقات هذه إلا من نظام التشغيل 10.7 وما بعده. قصة قصيرة قصيرة، يمكن للمرء أن استخدام التجريد الكلي الذي يعمل س منصة. للوصول إلى البيانات والحجم لدفار () و لدلن () يتم تعريف التعريف الخارجي الفعلي للرمز، يتم استخدام إكسلد (: استخدام المثال في برنامج C: كمذكرة نهائية، يجب توخي الحذر عند اختيار المعرف المتغير. سوف لد استخدام اسم الملف لإنشاء اسم القسم. إذا كان اسم الملف يتضمن أحرفا غير صالحة معرفات C سيتم تحويلها إلى سفلية. مثلا لد - r - b بيناري - o example. o. imagesexample. jpg سيخلق منطقة بينارييماجيسكسامبل. ال. فضلا عن القطع والنقطة تتحول إلى سفلية. هذه ليست مشكلة على أوسك حيث يجب تحديد المعرف مع الخيار - sectcreate. ومع ذلك، فإن المعرفات على أوسك تقتصر على 16 حرفا. لذلك من أجل استخدام نهج أعلاه منصة X، يجب أن يكون المسار إلى اسم الملف الذي تم تمريره إلى لد حرف Lt16 ويجب تحديد المعرف نفسه على الأمر تجميع أوسك. المشروع الكامل الذي يستخدم هذا النهج لتضمين ملف صورة جبيغ وملف نصي جافا سكريبت هو هارفيد. كما توضح كيفية استخدام ماكيفيل x-باسيفيك لإنشاء ملفات الكائن وإضافة العلامات ذات الصلة إلى الأمر غسك أوسك. 1) يجب أن تعرف المزيد عن هذا أو لديك أي مؤشرات إلى وثائق، يرجى الاتصال ميدوز أي شخص لديه فكرة كيفية تجميع أي ملف الموارد بشكل ثابت في ملف قابل للتنفيذ أو ملف المكتبة المشتركة باستخدام دول مجلس التعاون الخليجي على سبيل المثال إد مثل إضافة ملفات الصور التي لم تتغير أبدا (وإذا فعلوا، إد يجب أن تحل محل الملف على أي حال) و لن تريد لهم أن يكمن حولها في نظام الملفات. إذا كان هذا ممكنا (وأعتقد أنه لأن فيسوال C ل ويندوز يمكن القيام بذلك أيضا)، كيف يمكنني تحميل الملفات التي يتم تخزينها في الثنائية الخاصة هل التحليل القابل للتنفيذ نفسه، والعثور على ملف واستخراج البيانات من فإنه ربما يكون خيارا لدول مجلس التعاون الخليجي الأول الذي لم يراه بعد. استخدام محركات البحث لم يبصقون حقا الاشياء الصحيحة. أنا بحاجة إلى هذا للعمل من أجل المكتبات المشتركة و إلف العاديين التنفيذيين. أي مساعدة هو موضع تقدير يعطي شيئا مثل: للتوافق مع رمز آخر يمكنك ثم استخدام إما فموبوبين للحصول على كائن فيل منتظم، أو بدلا من ذلك ستد :: سترينغستريم لجعل يوستريم. ستد :: سترينغستريم ليست كبيرة لهذا على الرغم من ويمكنك بالطبع استخدام مجرد مؤشر في أي مكان يمكنك استخدام التكرار. إذا كنت تستخدم هذا مع أوتوماك لا ننسى لتعيين بيلتسورسز بشكل مناسب. الشيء الجميل عن القيام بذلك بهذه الطريقة هو: يمكنك الحصول على نص خارج، لذلك يمكن أن يكون في التحكم في الإصدار والتصحيح بشكل معقول ومن المحمولة ومحددة جيدا على كل منصة أجاب 1 فبراير 11 في 16:04 تحديث لقد نمت لتفضل السيطرة جون ريبليس التجمع. incbin الحل القائم على العروض والآن استخدام البديل على ذلك. لقد استخدمت أوبجكوبي (غنو بينوتيلز) لربط البيانات الثنائية من ملف فو-data. bin في قسم البيانات من القابل للتنفيذ: وهذا يعطيك ملف الكائنات فو-data. o التي يمكنك ربطها في التنفيذ الخاص بك. واجهة C تبدو وكأنها حتى تتمكن من القيام بأشياء مثل إذا كان العمارة الهدف الخاص بك لديه قيود خاصة حيث حيث يتم تخزين البيانات الثابتة والمتغيرة، أو كنت ترغب في تخزين تلك البيانات في الجزء. text لجعلها تناسب نفس نوع الذاكرة كما رمز البرنامج الخاص بك، يمكنك أن تلعب مع المعلمات أوبجكوبي بعض أكثر من ذلك. يمكنك تضمين الملفات الثنائية في قابل للتنفيذ باستخدام لد رابط. على سبيل المثال، إذا كان لديك ملف foo. bar ثم يمكنك تضمينه في قابل للتنفيذ إضافة الأوامر التالية إلى لد إذا كنت استدعاء لد من خلال غك ثم سوف تحتاج إلى إضافة - Wl هنا --formatbinary يروي رابط أن الملف التالي هو ثنائي و - فورماتدفولت التبديل مرة أخرى إلى تنسيق الإدخال الافتراضي (وهذا هو مفيد إذا قمت بتحديد ملفات الإدخال الأخرى بعد foo. bar). ثم يمكنك الوصول إلى محتوى الملف الخاص بك من التعليمات البرمجية: وهناك أيضا رمز اسمه بيناريفوبارزيزي. أعتقد أنه من نوع إينتبترت ولكن لم تحقق ذلك. كنت مؤخرا بحاجة إلى تضمين ملف في ملف قابل للتنفيذ. منذ إم تعمل في سطر الأوامر مع غك، وآخرون وليس مع أداة راد يتوهم أن يجعل كل شيء يحدث سحرية لم يكن واضحا على الفور بالنسبة لي كيفية جعل هذا يحدث. وهناك قليلا من البحث على شبكة الإنترنت وجدت الإختراق لقط أساسا على نهاية للتنفيذ ثم فك حيث كان يقوم على مجموعة من المعلومات لم أكن أريد أن أعرف عن. يبدو مثل هناك يجب أن يكون وسيلة أفضل. وهناك، أوبجكوبي إلى الإنقاذ. يقوم أوبجكوبي بتحويل ملفات الكائن أو الملفات التنفيذية من تنسيق إلى آخر. أحد التنسيقات التي يفهمها هو ثنائي، وهو بشكل أساسي أي ملف ليس في أحد التنسيقات الأخرى التي يفهمها. لذلك ربما كنت تصور فكرة: تحويل الملف الذي نريد تضمينه في ملف كائن، ثم يمكن ببساطة أن تكون مرتبطة في مع بقية التعليمات البرمجية لدينا. لنفترض أن لدينا اسم الملف data. txt الذي نريد تضمينه في برنامجنا القابل للتنفيذ: لتحويل هذا إلى ملف كائن يمكننا ربطه مع برنامجنا نقوم فقط باستخدام أوبجكوبي لإنتاج ملف. o: هذا يخبر أوبجكوبي أن إدخالنا الملف في تنسيق ثنائي، أن ملف الإخراج لدينا يجب أن يكون في تنسيق elf32-i386 (ملفات الكائن على x86). الخيار - binary الهندسة المعمارية يقول أوبجكوبي أن ملف الإخراج المقصود تشغيل على x86. هذا مطلوب بحيث لد سوف يقبل الملف لربط مع الملفات الأخرى ل x86. يمكن للمرء أن يعتقد أن تحديد تنسيق الإخراج كما elf32-i386 يعني هذا، لكنه لا. الآن أن لدينا ملف الكائن نحن بحاجة فقط لتشمل ذلك عندما نقوم بتشغيل الرابط: عندما نقوم بتشغيل النتيجة نحصل على الصلاة من أجل الإخراج: بالطبع، أنا هافنت قال القصة كلها حتى الآن، ولا يظهر لك main. c. عندما يقوم أوبجكوبي بالتحويل أعلاه يضيف بعض رموز الارتباط إلى ملف الكائن المحول: بعد الربط، تحدد هذه الرموز بداية ونهاية الملف المضمن. يتم تشكيل أسماء الرموز عن طريق الإيداع المسبق الثنائي وإلحاق بداية أو إنهاء اسم الملف. إذا كان اسم الملف يحتوي على أي أحرف غير صالحة في اسم رمز يتم تحويلها إلى سفلية (على سبيل المثال data. txt يصبح داتاكست). إذا كنت تحصل على أسماء لم يتم حلها عند ربط باستخدام هذه الرموز، قم بإجراء هيكسدومب - C على ملف الكائن والنظر في نهاية تفريغ الأسماء التي تم اختيار أوبجكوبي. يجب أن تكون التعليمات البرمجية للاستخدام الفعلي للملف المضمن الآن واضحة بشكل معقول: أحد الأمور الهامة والدقيقة التي يجب ملاحظتها هي أن الرموز تضاف إلى متغيرات ملف إرنت الكائن. أنها لا تحتوي على أي بيانات، بدلا من ذلك، عنوانهم هو قيمتها. وأعلنها كنوع شار لأنه ملائم لهذا المثال: البيانات المضمنة هي بيانات الأحرف. ومع ذلك، يمكن أن تعلن لهم أي شيء، كما إنت إذا كانت البيانات عبارة عن مجموعة من الأعداد الصحيحة، أو كما فوبارت هيكل إذا كانت البيانات أي صفيف من أشرطة فو. إذا كانت البيانات المضمنة ليست موحدة، ثم شار هو على الأرجح الأكثر ملاءمة: تأخذ عنوانه ويلقي المؤشر إلى النوع الصحيح كما كنت اجتياز البيانات. أجاب أبريل 11 11 في 20: 39X86-64 التعليمات ترميز 1: عند استخدام أي بادئة ريكس، يتم استخدام سبل، ببل، سيل و ديل. خلاف ذلك، دون أي ريكس بادئة أه، تش، د و ب تستخدم. البادئات القديمة يمكن أن تحتوي كل تعليمات على ما يصل إلى أربعة بادئات. في بعض الأحيان تكون هناك حاجة إلى بادئة للتعليم أثناء فقدان المعنى الأصلي (أي البادئة الإلزامية). يمكن استخدام البادئات التالية، الأمر لا يهم: مجموعة البادئة 1 0xF0: بادئة لوك 0xF2: بادئة ريبنيريبنز 0xF3: بادئة ريب أو ريبيريب البادئة المجموعة 2 0x2E: تجاوز قطاع كس 0x36: تجاوز مقطع سس 0x3E: تجاوز قطاع دس 0x26: إس تجاوز 0x64: تجاوز قطاع الخدمة الثابتة 0x65: تجاوز قطاع غس 0x2E: الفرع لم يتم أخذه 0x3E: الفرع الذي تم أخذه البادئة المجموعة 3 0x66: بادئة تجاوز حجم التشغيل مجموعة البادئة 4 0x67: بادئة تجاوز حجم العنوان عندما يكون هناك بادئة أو أكثر من مجموعة واحدة، والسلوك غير معروف. يتجاهل بعض المعالجات البادئات اللاحقة من نفس المجموعة، أو استخدام آخر بادئة محددة فقط لأي مجموعة. بادئة لوك مع بادئة لوك، يتم تنفيذ بعض التعليمات قراءة وتعديل الكتابة كتابة. يمكن استخدام بادئة لوك فقط مع الإرشادات التالية أو حدث استثناء رمز غير صالح: أدك و أد و أند بتك أو بتر أو بتس أو كمبشغ أو CMPXCHG8B أو CMPXCHG16B أو ديك أو إنك أو نيغ أو نوت أو أور أو سبب أو سوب، شاد، ششغ و شور. البادئات ريبنيبنز و ريب و ريبيريب تكرار البادئات يسبب تعليمات التعامل مع سلسلة لتكرار. سوف بادئة ريب تكرار التعليمات المرتبطة تصل إلى سك مرات، وانخفاض سك مع كل تكرار. ويمكن استخدامه مع إنز، لودس، موفس، أوتس و ستوس التعليمات. ريب و ريبز هي مرادفات وتكرار التعليمات حتى يصل سك 0 أو عندما يتم تعيين زف إلى 0. ويمكن استخدامه مع مبس، مبسب، مبسد، مبسو، سكاس، سكاسب، سكاسد والتعليمات سكاسو. ريبن و ريبنز أيضا مرادفات وتكرار التعليمات حتى يصل سك 0 أو عندما يتم تعيين زف إلى 1. ويمكن استخدامه مع مبس، مبسب، مبسد، مبسو، سكاس، سكاسب، سكاسد و سكاسو تعليمات كس، سس، دس، إس، فس و غس البادئات تجاوز تجاوزات يتم استخدام تجاوزات قطاع مع التعليمات التي تشير الذاكرة غير مكدس. يتم تضمين الشريحة الافتراضية من خلال التعليمات، واستخدام تجاوز محدد يفرض استخدام الجزء المحدد للعمليات الذاكرة. في 64 بت يتم تجاهل تجاوزات كس و سس و دس و إس. فرع تاكينوت أخذت بادئات يمكن استخدام تلميحات فرع لتقليل تأثير سوء تقدير فرع إلى حد ما. الفرع أخذ تلميحا هو تلميح قوي، في حين أن الفرع لم يأخذ تلميحا هو تلميح ضعيف. يتم دعم تلميحات فرع فقط من قبل شركة إنتل منذ بنتيوم 4. سواء كان استخدامها على هياكل أمد له أي (إيجابي أو سلبي) تأثير على الإطلاق غير معروف. حجم تجاوز حجم التشغيل وحجم العنوان يمكن تجاوز حجم المعامل الافتراضي وحجم العنوان باستخدام هذه البادئة. راجع الجدول التالي: 1: تعليمات معينة افتراضية إلى (أو يتم إصلاحها في) 64-بت المعاملات ولا تحتاج إلى بادئة ريكس لهذا، راجع هذا الجدول. ناسم يحدد حجم المعامل من خلال النظر في حقول MODRM. reg أو (للتسجيل) MODRM. rm. عندما يكون كل من 32 بت، يصبح حجم المعامل 32 بت. نفس ل 16 بت و 64 بت. عندما تختلف، يحدث خطأ في وقت الترجمة. يتم تحديد حجم العنوان من خلال النظر في (لتشغيل الذاكرة) الحقل MODRM. rm أو قاعدة SIB. base. SIB. index والنزوح، في هذا الترتيب. لذلك عندما يستخدم SIB. base تسجيل 16 بت (مثل يكس)، يصبح حجم العنوان 16 بت. استخدام التشريد 32 بت سوف يؤدي إلى اقتطاع التشرد. مجموعة التعليمات x86-64 تحدد العديد من أوبكوديس والعديد من الطرق لترميز لهم، اعتمادا على عدة عوامل. رموز أوبكوديس القديمة ليغاسي (و x87) تتكون الأوامر من هذا الترتيب: بادئة إلزامية تتطلب بعض التعليمات (أبرزها تعليمات سيمد) بادئة إلزامية (0x66، 0xF2 أو 0xF3)، والتي تبدو كالبادئة المعدل الطبيعي. عندما تكون هناك حاجة إلى بادئة إلزامية، يتم وضعها مع بادئات المعدل قبل بادئة ريكس (إن وجدت). بادئة ريكس لا تتوفر بادئة ريكس إلا في الوضع الطويل. يجب ترميز البادئة ريكس عند: استخدام حجم 64 بت من المعامل وتعليمات لا يتم افتراضيا إلى حجم المعامل 64 بت أو باستخدام واحدة من السجلات الموسعة (R8 إلى R15، XMM8 إلى XMM15، YMM8 إلى YMM15، CR8 إلى CR15 و DR8 إلى DR15) أو باستخدام واحد من سجلات البايت موحدة سبل، ببل، سيل أو ديل. يجب ألا يتم تشفير البادئة ريكس عند: استخدام أحد سجلات البايتات العالية أه أو تش أو ب أو د. في جميع الحالات الأخرى، يتم تجاهل بادئة ريكس. استخدام العديد من بادئات ريكس غير محدد، على الرغم من أن المعالجات يبدو أنها تستخدم فقط آخر بادئة ريكس. التعليمات التي الافتراضي إلى حجم المعامل 64 بت في الوضع الطويل هي: يمكن أن يكون أوبكود 1 أو 2 أو 3 بايت في الطول. اعتمادا على تسلسل الهروب أوبكود، يتم تحديد خريطة أوبكود مختلفة. تسلسل أوبكود المحتملة هي: لاحظ أن أوبكوديس يمكن تحديد أن حقل ريج في بايت مودرم ثابت قيمة معينة. فيكسوب أوبكوديس يجب أن يتم ترميز البادئة فيكسوب عندما: التعليمات له فقط فيكسوب أوبكود وليس أي رمز أو إرث قديم أو 256 بت وتستخدم سجلات يم أو أكثر من ثلاثة العمليات المستخدمة (على سبيل المثال عمليات مصدر غير تدميري) أو عند استخدام شم-بت شم يجب أن يتم مسح البتات 128-255 من سجل يم المقابل. يجب ألا يتم تشفير البادئة فيكسوب عندما: عند استخدام سجلات الوجهة شم 128 بت، يجب عدم تغيير البتات 128-255 من سجل يم المقابل. هناك العديد من التعليمات فيكس و شوب، وكلها يمكن ترميزها باستخدام البادئة الهروب فيكسوب ثلاثة بايت. فيكس و شوب الهروب البادئات استخدام الحقول مع الدلالات التالية: 1: في وضع الحماية المحمية، وهذا هو مجرد disp32. ولكن في الوضع الطويل هذا هو RIPdisp32 (لعناوين 64 بت) أو EIPdisp32 (لعناوين 32 بت، أي مع بادئة تجاوز حجم العنوان، انظر هنا). 2: في وضع طويل، لتشفير disp32 كما في وضع المحمية كومباتيبيليتيبيليتي، استخدام بايت سيب. ريبيب النسبي معالجة عنوان في x86-64 يمكن أن تكون نسبة إلى قيمة مؤشر التعليمات الحالية. ويشار إلى ذلك مع سجلات مؤشر التعليم ريب (64 بت) و إيب (32 بت)، والتي لا يتم عرضها على خلاف ذلك للبرنامج وربما لا توجد جسديا. يسمح عنوان ريب النسبي لملفات الكائنات بأن تكون مستقلة. يحتوي بايت سيب على الحقول التالية: يشير هذا الحقل إلى عامل التحجيم SIB. index، حيث s (كما هو مستخدم في الجداول) يساوي 2 SIB. scale. سجل الفهرس للاستخدام. راجع سجلات القيم المستخدمة لكل من السجلات. و REX. X، فيكس. يمكن أن يمدد الحقل X هذا الحقل بتات 1 ذات دلالة إجمالية أكبر إلى 4 بتات. سجل قاعدة للاستخدام. راجع سجلات القيم المستخدمة لكل من السجلات. و REX. B، فيكس. يمكن للمجال B أن يمدد هذا المجال بتتت 1 من البتات الأكثر دلالة إلى 4 بتات. معالجة 3264 بت معنى بايت سيب أثناء استخدام معالجة 32 أو 64 بت هو كما يلي. يتم استخدام حقل مودرم بايت مود وحقل مؤشر بايت سيب رأسيا، حقل قاعدة بايت سيب و REXVEXXOP. B بت أفقيا. s هو عامل التحجيم. B. Base. X. Index وزارة الدفاع في ثنائي. 1: لا يتم ترميز أي سجل قاعدة. 2: لا يتم ترميز سجل الفهرس. التشرد قيمة التهجير هي إزاحة بايت 1 أو 2 أو 4 أو 8 تضاف إلى العنوان المحسوب. عند استخدام تشريد 8 بايت، لا يتم ترميز أي عامل فوري. إن قيمة التهجير، إن وجدت، تتبع بايت مودرم و سيب التي تمت مناقشتها أعلاه. عندما توضح جداول مودرم أو سيب أن قيمة ديسب مطلوبة، أو بدون بايت مودرم استخدام موفست (أمد) أو موفس (إنتل) في بناء الجملة ذاكري، فإن بايت التشريد مطلوبة. تتطلب بعض التعليمات قيمة فورية. التعليمات (والعمود حجم الحجم في الجدول أعلاه) تحديد طول القيمة الفورية. ويعني حجم الحركة المنغني (8 أو بت-8) قيمة مباعدة واحدة بايتة، تعني قيمة IM16 (أو حجم 16 بتة) قيمة فوريتين من البايتة، هما قيمة IM32 (أو حجم بتات 32 بت) قيمة أربعة بايتات و 64 (أو 64 بت من حجم المعامل) قيمة ثمانية بايت. عندما يتم ترميز قيمة فورية 8 بايت، لا يمكن ترميز أي نزوح. المراجع الخارجية
No comments:
Post a Comment