2011-01-04 16 views
17

मैं अपनी असेंबली (आईएलडीएसएम के माध्यम से) में से कुछ आईएल के माध्यम से घूम रहा था और मैंने देखा कि मेरी सभी विधियांnopनिर्देश से शुरू होती हैं।उत्पन्न आईएल कोड एनओपी के साथ क्यों शुरू होता है?

क्या किसी को पता है कि ऐसा क्यों है?

उत्तर

27

असेंबली डीबग मोड में संकलित की गई थी। Nop निर्देश कुछ भी नहीं करते हैं (यानी कोई साइड इफेक्ट नहीं है), लेकिन ब्रेकपॉइंट रखने के लिए सुविधाजनक निर्देश के रूप में कार्य करें।

टिप

आप डीबगिंग उद्देश्यों के लिए एक अतिरिक्त ब्रेकप्वाइंट के लिए एक जगह की जरूरत है, तो आप रिक्त ब्रेसेस की एक जोड़ी जोड़कर एक डीबग बिल्ड में एक Nop के शामिल किए जाने के लिए मजबूर कर सकते हैं, उदाहरण के लिए

_grid.PreviewMouseRightButtonDown += (sender, e) => 
{ 
    _isRightMouseDown = true; 

    RowColumnIndex cell = _grid.PointToCellRowColumnIndex(e); 
    {} //<------ Adding a Nop allows a breakpoint here. 
}; 
+2

क्या वे चक्र बर्बाद करते हैं? – YellPika

+4

@YellPika हां वे करते हैं। वे चक्र कुछ भी नहीं बर्बाद करते हैं। वे उन चीजों में से एक हैं जो डीबग को धीमे बनाता है। –

+0

हालांकि जेआईटी कंपाइलर को देशी निर्देश प्रवाह से उन्हें अनुकूलित करना चाहिए। – devstuff