X86- সমাবেশ কোড ইন, হয় JE
এবং JNE
যেমন ঠিক একই JZ
এবং JNZ
?
X86- সমাবেশ কোড ইন, হয় JE
এবং JNE
যেমন ঠিক একই JZ
এবং JNZ
?
উত্তর:
JE
এবং JZ
ঠিক একই জিনিসটির জন্য কেবল আলাদা আলাদা নাম: শর্তসাপূর্ণ লাফ যখন ZF
("শূন্য" পতাকা) 1 এর সমান হয়।
(একইভাবে, JNE
এবং JNZ
শর্তসাপেক্ষে জাম্পের ZF
0 এর সমান হলে কেবল আলাদা আলাদা নাম )
আপনি এগুলি বিনিময়যোগ্যভাবে ব্যবহার করতে পারেন তবে আপনি যা করছেন তার উপর নির্ভর করে আপনার সেগুলি ব্যবহার করা উচিত :
JZ
/ JNZ
আপনি যখন শূন্যের সমান কিছু হওয়ার জন্য স্পষ্টভাবে পরীক্ষা করছেন তখন আরও উপযুক্ত:
dec ecx
jz counter_is_now_zero
JE
এবং JNE
একটি CMP
নির্দেশের পরে আরও উপযুক্ত :
cmp edx, 42
je the_answer_is_42
(একটি CMP
নির্দেশনা একটি বিয়োগফল সম্পাদন করে, এবং পতাকাগুলি রাখার সময় ফলাফলের মূল্যকে ছুঁড়ে দেয়; ZF=1
অপারেন্ডগুলি সমান হয়ে ZF=0
গেলে এবং যখন তা না হয় তখন আপনি পাবেন ))
jb
/ jc
/ jnae
সমস্ত পরীক্ষার সিএফ = 1। দেখুন felixcloutier.com/x86/jcc (অথবা cmovcc বা setcc)
থেকে নির্দেশনাবলী রেফারেন্স - ইন্টেলের ম্যানুয়াল , JE
এবং JZ
একই opcode (আছে 74
rel8 জন্য / 0F 84
রিল 16/32 জন্য) এছাড়াও JNE
এবং JNZ
( 75
rel8 জন্য / 0F 85
রিল জন্য 16/32) শেয়ার opcodes।
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).
je : Jump if equal:
399 3fb: 64 48 33 0c 25 28 00 xor %fs:0x28,%rcx
400 402: 00 00
401 404: 74 05 je 40b <sims_get_counter+0x51>