मैंने एक साधारण हैलो वर्ल्ड प्रोग्राम लिखा है।निष्पादन योग्य और स्थानांतरित करने योग्य ऑब्जेक्ट फ़ाइल में संदेह
#include <stdio.h>
int main() {
printf("Hello World");
return 0;
}
मैं पुनर्निधारणीय वस्तु फ़ाइल और निष्पादन योग्य फ़ाइल की तरह लग रही है कि कैसे को समझने के लिए करना चाहता था। वस्तु फ़ाइल मुख्य कार्य करने के लिए इसी
0000000000000000 <main>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: bf 00 00 00 00 mov $0x0,%edi
9: b8 00 00 00 00 mov $0x0,%eax
e: e8 00 00 00 00 callq 13 <main+0x13>
13: b8 00 00 00 00 mov $0x0,%eax
18: c9 leaveq
19: c3 retq
यहाँ है printf के लिए समारोह कॉल callq 13. है एक बात मुझे समझ नहीं आता क्यों है यह 13. है इसका मतलब है कि सही adresss 13 में फ़ंक्शन को कॉल करें, ??। 13 में अगला निर्देश है, है ना ?? कृपया मुझे बताएं इसका क्या अर्थ है ??
निष्पादन योग्य कोड मुख्य करने के लिए इसी
00000000004004cc <main>:
4004cc: 55 push %rbp
4004cd: 48 89 e5 mov %rsp,%rbp
4004d0: bf dc 05 40 00 mov $0x4005dc,%edi
4004d5: b8 00 00 00 00 mov $0x0,%eax
4004da: e8 e1 fe ff ff callq 4003c0 <[email protected]>
4004df: b8 00 00 00 00 mov $0x0,%eax
4004e4: c9 leaveq
4004e5: c3 retq
यहाँ है callq 4003c0 है। लेकिन द्विआधारी निर्देश e8 e1 fe ff ff है। 4003 सी 0 के अनुरूप कुछ भी नहीं है। क्या है कि मैं गलत हो रहा हूँ?
धन्यवाद। बाला
डाउनवॉटर से कोई टिप्पणी? –