X86- সমাবেশ কোড ইন, হয় JEএবং JNEযেমন ঠিক একই JZএবং JNZ?
X86- সমাবেশ কোড ইন, হয় JEএবং JNEযেমন ঠিক একই JZএবং JNZ?
উত্তর:
JEএবং JZঠিক একই জিনিসটির জন্য কেবল আলাদা আলাদা নাম: শর্তসাপূর্ণ লাফ যখন ZF("শূন্য" পতাকা) 1 এর সমান হয়।
(একইভাবে, JNEএবং JNZশর্তসাপেক্ষে জাম্পের ZF0 এর সমান হলে কেবল আলাদা আলাদা নাম )
আপনি এগুলি বিনিময়যোগ্যভাবে ব্যবহার করতে পারেন তবে আপনি যা করছেন তার উপর নির্ভর করে আপনার সেগুলি ব্যবহার করা উচিত :
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 (আছে 74rel8 জন্য / 0F 84রিল 16/32 জন্য) এছাড়াও JNEএবং JNZ( 75rel8 জন্য / 0F 85রিল জন্য 16/32) শেয়ার opcodes।
JEএবং JZতারা উভয়ই ZF(বা শূন্য পতাকা) জন্য পরীক্ষা করে , যদিও প্রথম JErel8 এবং JZrel8 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>