के बीच अंतर x86 असेंबली कोड में JE
और JNE
बिल्कुल JZ
और JNZ
जैसा ही है?जेई/जेएनई और जेडजेड/जेएनजेड
उत्तर
JE
और JZ
बिल्कुल वही बात के लिए सिर्फ अलग अलग नाम हैं: एक सशर्त कूद जब ZF
("शून्य" ध्वज) 1.
के बराबर है (इसी तरह, JNE
और JNZ
के लिए सिर्फ अलग अलग नाम हैं एक सशर्त कूद जब ZF
0. के बराबर)
आप उन्हें दूसरे के स्थान पर इस्तेमाल कर सकते हैं, लेकिन आप उन्हें 012 के आधार पर का उपयोग करना चाहिएतुम क्या कर रहे:
dec ecx
jz counter_is_now_zero
JE
और JNE
एक CMP
अनुदेश के बाद और अधिक उपयुक्त हैं: जब आप स्पष्ट रूप से कुछ के लिए परीक्षण कर रहे हैं बराबर होने के शून्य करने के लिए
JZ
/JNZ
अधिक उपयुक्त हैं :cmp edx, 42 je the_answer_is_42
(ए
CMP
निर्देश एक घटाव करता है, और झंडे को रखते हुए, परिणाम के मूल्य को फेंकता है; जिसके कारण आपZF=1
जब ऑपरेंड बराबर हैं औरZF=0
जब वे नहीं कर रहे हैं।)
Intel's manual - Instruction Set Reference से, JE
और JZ
ही opcode है (74
rel8 के लिए/rel 16 के लिए 0F 84
/32) रिले 16/32 के लिए rel8/0F 85
के लिए JNE
और JNZ
(75
) ऑपकोड साझा करें।
JE
और JZ
वे ZF
(या शून्य झंडा) के लिए दोनों की जांच, हालांकि मैनुअल पहले JE
rel8 और JZ
rel8 ZF
उपयोग के विवरण में थोड़ा अलग है, लेकिन मूल रूप से वे एक ही हैं।
यहाँ पुस्तिका के पृष्ठ 464, 465 और 467.
Op Code | mnemonic | Description
-----------|-----------|-----------------------------------------------
74 cb | JE rel8 | Jump short if equal (ZF=1).
74 cb | JZ rel8 | Jump short if zero (ZF ← 1).
0F 84 cw | JE rel16 | Jump near if equal (ZF=1). Not supported in 64-bit mode.
0F 84 cw | JZ rel16 | Jump near if 0 (ZF=1). Not supported in 64-bit mode.
0F 84 cd | JE rel32 | Jump near if equal (ZF=1).
0F 84 cd | JZ rel32 | Jump near if 0 (ZF=1).
75 cb | JNE rel8 | Jump short if not equal (ZF=0).
75 cb | JNZ rel8 | Jump short if not zero (ZF=0).
0F 85 cd | JNE rel32 | Jump near if not equal (ZF=0).
0F 85 cd | JNZ rel32 | Jump near if not zero (ZF=0).
- 1. "#", "$", "%", "&", और "_" "\ #", "\ $", "\%", "\ &", और "\ _"
- 2. प्रदर्शन और सॉर्टिंग, और mysql और php
- 3. "और" और "या"
- 4. "बिटवाइस और" और सी ++
- 5. getters और setters और
- 6. और बनाम * और | बनाम +
- 7. सीएसएस "और" और "या"
- 8. {} और {}
- 9. और
- 10. $ (...) और `...`
- 11. $ * और $ @
- 12. और
- 13. जावास्क्रिप्ट शॉर्टैंड अगर-और और
- 14. क्षमताओं और लिनक्स और जावा
- 15. MySQL और PHP और jquery
- 16. जावा और सी # और .NET
- 17. UILabel और numberOfLines और sizeToFit:
- 18. लिखें और और फिर विधियां
- 19. XHTML और और (एम्पसेंड) एन्कोडिंग
- 20. बेंचमार्क और सी # और जावा
- 21. रेल और मार्कडाउन और संपादक
- 22. अंतर और इरादा और सेटकंटेंटव्यू
- 23. Mercurial और maven (और svn)
- 24. सी ++ नया और हटाएं और स्ट्रिंग और फ़ंक्शंस
- 25. डब्ल्यूपीएफ और सिल्वरलाइट नियंत्रण और लेआउट पैन और ज़ूम क्षमताओं
- 26. कॉफ़ीस्क्रिप्ट क्लास और स्कोप और वसा और पतले तीर
- 27. (OrElse और Or) और (और इसके अलावा और) - कब उपयोग करें?
- 28. एमवीपी और उपयोगकर्ता नियंत्रण और आमंत्रण
- 29. घूर्णन और स्थिति: पूर्ण (IE8 और निचला)
- 30. टिंकर और wxwidgets के पेशेवरों और विपक्ष?
लांग जवाब से एक उद्धरण है: हाँ। –
संक्षिप्त उत्तर: नहीं। (लेकिन वे * बिल्कुल * एक ही मशीन कोड के अनुरूप होते हैं, इसलिए वे * वही * एक ही चीज़ करते हैं। उनके पास समान तुलना के लिए अलग-अलग निमोनिक्स होते हैं।) –
जेई का मतलब बराबर है तो कूदें, यह बराबर है यदि पूर्व तुलना में बराबर है जेड फ्लैग सेट, जेड झंडा सेट है अगर जेड झंडा सेट है। वे बिल्कुल वही हैं, कुछ लोग मेरी तुलना के अनुसार सोचना/लिखना चाहते हैं बराबर या बराबर नहीं थे। कुछ लोग जेड फ्लैग सेट या जेड फ्लैग स्पष्ट के संदर्भ में सोचते हैं और लिखते हैं। –