2012-05-08 21 views

उत्तर

16

इसका एक एनओपी है। यह% esi और 0x0 की सामग्री जोड़ता है, और परिणाम% esi में डालता है। किसी के पास या तो एक बेकार कोड जनरेटर है या एन बाइट्स भरने की जरूरत है, जहां यह निर्देश सही आकार है।

एलआईए निर्देश काफी तेज (आमतौर पर 1 घड़ी) निष्पादित करते हैं, इसलिए यह एन एनओपीएस से काफी बेहतर है।

x86 जितना क्विर्की जैसा है, इसमें कई निर्देश हैं जो प्रभावी रूप से कुछ भी नहीं करते हैं लेकिन बाइट्स की अलग-अलग संख्या भरते हैं। आपको विभिन्न लंबाई के अन्य बेकार निर्देश मिल सकते हैं। आपको लंबे समय तक निर्देश मिलते हैं लेकिन 1 घड़ी या उससे कम समय में निष्पादित होते हैं।

एएमडी x86-64 मैनुअल में कुछ सुझाव हैं कि एनओपी के लिए क्या उपयोग किया जाना चाहिए; वे सुझाव देते हैं कि एक उपसर्ग ओपोड्स में से एक वास्तविक एनओपी, आईआईआरसी से पहले कई बार दोहराया गया है। इस तरह के उपसर्ग opcodes निर्देश fetch इंजन द्वारा बहुत जल्दी उपभोग कर रहे हैं; ज्यादातर उनकी लागत निर्देश पूर्व-प्राप्त में छिपी हुई है, और निर्देश निष्पादन समय में नहीं।

+1

उत्तरार्द्ध, जब तक कि जीसीसी एक बेकार कोड जनरेटर नहीं है। शीघ्र जवाब देने के लिए ध्न्यवाद। – Brian

+3

एक दिलचस्प बात यह है कि 'ली 0x0 (% esi),% esi' केवल 32-बिट कोड में नो-ऑप है। 64-बिट कोड में, यह निर्देश अतिरिक्त रूप से '% आरएसआई' के उच्च डबल शब्द को शून्य करता है। अब तक मैंने जीसीसी को केवल 32-बिट कोड में ऐसे निर्देश डालने को देखा है। – Eugene

+3

.... इस प्रकार एएमडी के बिंदु "मल्टीबाइट एनओपी की सिफारिश करें"। –