c++ - Nulling %al register before calling print -


इसे ध्यान में रखते हुए:

  #include & lt; cstdio & gt; int main () {printf ("null"); वापसी 0; }   

विधानसभा क्यों है:

  मुख्य: # @ मेन पुशक% राक movl $ .L.str,% edi xorb% al,% al callq printf xorl% eax,% eax popq% rdx ret L.str: .asciz "null"   

के लिए xorb% al,% al क्या है? मुझे पता है कि % al रजिस्टर % rax रजिस्टर का एक निम्नतम 8 बिट है।

वर्ज अर्गिंग कॉलिंग कॉन्फ्रेंस के अनुसार, वर्गार्ड्स को कॉल करने से पहले अल रजिस्टर को विगेट्स पास करने के लिए इस्तेमाल किए गए वेक्टर रजिस्टरों की संख्या पर सेट किया जाना चाहिए। इस मामले में शून्य है, और एक्सओर एक रजिस्टर को शून्य करने के लिए एक आम मुहावरा है।

यदि आप कॉलिंग सम्मेलन में रुचि रखते हैं, तो उपरोक्त एबीआई डॉक पढ़ें।

Comments

Popular posts from this blog

Java - Error: no suitable method found for add(int, java.lang.String) -

java - JPA TypedQuery: Parameter value element did not match expected type -

c++ - static template member variable has internal linkage but is not defined -