lea 0x0(%esi),%esi
मेरा मानना है कि इसका कोई परिणाम नहीं है और बस स्थान भर रहा है। क्या यह मामला है?ली 0x0 (% esi) का अर्थ क्या है,% esi
lea 0x0(%esi),%esi
मेरा मानना है कि इसका कोई परिणाम नहीं है और बस स्थान भर रहा है। क्या यह मामला है?ली 0x0 (% esi) का अर्थ क्या है,% esi
इसका एक एनओपी है। यह% esi और 0x0 की सामग्री जोड़ता है, और परिणाम% esi में डालता है। किसी के पास या तो एक बेकार कोड जनरेटर है या एन बाइट्स भरने की जरूरत है, जहां यह निर्देश सही आकार है।
एलआईए निर्देश काफी तेज (आमतौर पर 1 घड़ी) निष्पादित करते हैं, इसलिए यह एन एनओपीएस से काफी बेहतर है।
x86 जितना क्विर्की जैसा है, इसमें कई निर्देश हैं जो प्रभावी रूप से कुछ भी नहीं करते हैं लेकिन बाइट्स की अलग-अलग संख्या भरते हैं। आपको विभिन्न लंबाई के अन्य बेकार निर्देश मिल सकते हैं। आपको लंबे समय तक निर्देश मिलते हैं लेकिन 1 घड़ी या उससे कम समय में निष्पादित होते हैं।
एएमडी x86-64 मैनुअल में कुछ सुझाव हैं कि एनओपी के लिए क्या उपयोग किया जाना चाहिए; वे सुझाव देते हैं कि एक उपसर्ग ओपोड्स में से एक वास्तविक एनओपी, आईआईआरसी से पहले कई बार दोहराया गया है। इस तरह के उपसर्ग opcodes निर्देश fetch इंजन द्वारा बहुत जल्दी उपभोग कर रहे हैं; ज्यादातर उनकी लागत निर्देश पूर्व-प्राप्त में छिपी हुई है, और निर्देश निष्पादन समय में नहीं।
उत्तरार्द्ध, जब तक कि जीसीसी एक बेकार कोड जनरेटर नहीं है। शीघ्र जवाब देने के लिए ध्न्यवाद। – Brian
एक दिलचस्प बात यह है कि 'ली 0x0 (% esi),% esi' केवल 32-बिट कोड में नो-ऑप है। 64-बिट कोड में, यह निर्देश अतिरिक्त रूप से '% आरएसआई' के उच्च डबल शब्द को शून्य करता है। अब तक मैंने जीसीसी को केवल 32-बिट कोड में ऐसे निर्देश डालने को देखा है। – Eugene
.... इस प्रकार एएमडी के बिंदु "मल्टीबाइट एनओपी की सिफारिश करें"। –