इनमें से कुछ को कवर किया गया है, लेकिन मैं थोड़ा और विस्तार भर दूंगा।
test reg,mask
निर्देश का सामान्य उद्देश्य मास्क के खिलाफ एक रजिस्टर मूल्य का परीक्षण करता है (रजिस्टर मान मास्क के साथ आंतरिक रूप से एंडेड होता है) और फिर परिणाम के अनुसार स्थिति झंडे एसएफ, जेडएफ और पीएफ सेट करता है। [टिप्पणी प्रति संपादित @ChrisDodd से] यह भी बिना शर्त O
(अतिप्रवाह) को साफ करता है और C
(कैरी) की स्थिति बिट्स। [/ संपादित करें]
SF = sign flag (1 if sign bit is set (a 2's complement negative value))
ZF = zero flag (1 if result is 0)
PF = parity flag (1 if result has an even number of 1 bits)
इस विशिष्ट उदाहरण (test eax,eax
) में, शिक्षा eax AND eax
ले जा रहा है। जब यह किया जाता है, बिट्स होंगे:
SF = 1 if EAX has a negative value (since sign bit will not change when ANDed with itself)
ZF = 1 if EAX is zero (the only value that yields a zero when ANDed with itself is zero)
PF = 1 if EAX has an even number of 1 bits
दूसरे शब्दों में, यह शून्य या नकारात्मक के लिए एक सरल परीक्षण है। यह संकलक कोड पीढ़ी में एक बहुत ही आम पैटर्न है।
ईक्स के खिलाफ [x86 असेंबली - 'testl' eax के संभावित डुप्लिकेट?] (Http://stackoverflow.com/questions/147173/x86-assembly-testl-eax-against-eax) – interjay
मुझे विश्वास नहीं है, वह एक अलग कूद निर्देश का उपयोग कर रहा है। – dgamma3
यह अभी भी 0 के साथ तुलना है, आप इसके बाद किसी भी कूद निर्देश का उपयोग कर सकते हैं। – interjay