मेरे पास एक छोटा सा टुकड़ा है (x86) असेंबली है कि मैं यह पता लगाने की कोशिश कर रहा हूं कि यह क्या करता है।x86 असेंबली में आप एक तुलना ऑपरेशन किए बिना शून्य ध्वज (जेडएफ) कैसे सेट कर सकते हैं?
...
6: 81 ec 00 01 00 00 sub $0x100, %esp
c: 31 c9 xor %ecx , %ecx
e: 88 0c 0c mov %cl , (%esp, %ecx, 1)
11: fe c1 inc %cl
13: 75 f9 jne 0xe
....
यह अपने पाशन की तरह लग रहा है, हालांकि जब तक "JNE", गलत का आकलन यानी शून्य झंडा = 0. (संभवतः इसकी संख्या 1, 2, 3 डाल ... ढेर ?? में)
असेंबली में मेरी छोटी जांच से (इस पर नया है) यह सीम आप एक तुलना ऑपरेशन (सीएमपी) करके शून्य झंडा सेट करते हैं, लेकिन मुझे एक तुलना ऑपरेशन नहीं दिखाई देता है।
तो, इस लूप से किस स्थिति में यह टूट जाएगा?
ठीक है, यह समझ में आता है। धन्यवाद! – Robert
मुझे लगता है कि मैंने 'mov% cl, (% esp,% ecx, 1) को छोड़कर सभी का पालन किया। अंग्रेजी में मैं कहूंगा "ईएसपी + ईसीएक्स के पते पर रैम में सीएक्स (सीएल) के निचले 8 बिट्स को ले जाएं, जो समझ में आता है, लेकिन '1' ऑपरेंड क्या है? क्या यह वास्तव में 'सरणी [सीएल + 1] = सीएल' (ढेर ओवरफ्लो?) या शायद' सरणी [सीएल] = सीएल + 1' है? शायद मैं x86 असेंबली की कुछ बारीकियों को याद कर रहा हूं, लेकिन मैं उत्सुक हूं। – mpontillo
1 वास्तव में एक आकार है जिसके द्वारा ऑफसेट को स्केल करना है। तो यह वास्तव में सरणी [सीएल * 1] = सीएल। –