इंटेल सॉफ्टवेयर विकास मैनुअल neg
अनुदेश के बारे में इस का कहना है:एनईजी निर्देश x86 पर एडजस्ट फ्लैग (एएफ) कैसे सेट करता है?
सीएफ झंडा 0 पर सेट है, तो स्रोत संकार्य 0 है; अन्यथा यह 1 पर सेट है। ओएफ, एसएफ, जेडएफ, एएफ, और पीएफ झंडे परिणाम के अनुसार सेट हैं।
यह स्पष्ट है कि परिणामस्वरूप एसएफ, जेडएफ और पीएफ सेटिंग का मतलब है, और मुझे लगता है कि छोटे नकारात्मक संख्या को अस्वीकार करने का प्रयास करते समय ऑफ सेट किया गया है। लेकिन एएफ के बारे में क्या?
मैंने सोचा कि एएफ सेट किया जाएगा जैसे neg %eax
not %eax
+ add $1, %eax
द्वारा प्रतिस्थापित किया गया था। लेकिन नहीं। वास्तविक CPU सेट एएफ पर 0x6ffffef5 को नकारात्मक करना, भले ही 1 से 0x9000010a जोड़ना एएफ सेट नहीं करता है।
xor %ecx, %ecx
sub %eax, %ecx
:
मैंने कोशिश की है और ऐसा लगता है कि यह काम करता है। – tbodt
@tbodt: अच्छा, मेरे सिद्धांत का परीक्षण करने के लिए धन्यवाद। –
* "कुछ सबूत हैं कि इंटेल सीपीयू पर एक उप निर्देश के रूप में आंतरिक रूप से एक ही यूओपी को नकारात्मक डीकोड करता है।" * दिलचस्प ... यह [जिस व्यवहार से मैंने हाल ही में सवाल किया] [https://stackoverflow.com/questions/44330079/why- करता है-इंटेल-कंपाइलर-प्राथमिक-negadd-over-sub) और भी आश्चर्यजनक। यदि 'neg' को' sub' के रूप में आंतरिक रूप से डीकोड किया गया है, तो 'उप'' पर 'neg' +' add' में संभवतः कोई लाभ नहीं हो सकता है। शायद मुझे आधिकारिक तौर पर इसे एक बग के रूप में रिपोर्ट करनी चाहिए। क्या इंटेल के पास कोई समस्या ट्रैकर है? –