मैं थोड़ी देर के लिए सी के साथ काम कर रहा हूं और हाल ही में एएसएम में आना शुरू हुआ। जब मैं एक कार्यक्रम संकलित करता हूं:
int main(void)
{
int a = 0;
a += 1;
return 0;
}
Objdump disassembly में कोड होता है, लेकिन रिट के बाद नोड्स:
...
08048394 <main>:
8048394: 55 push %ebp
8048395: 89 e5 mov %esp,%ebp
8048397: 83 ec 10 sub $0x10,%esp
804839a: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp)
80483a1: 83 45 fc 01 addl $0x1,-0x4(%ebp)
80483a5: b8 00 00 00 00 mov $0x0,%eax
80483aa: c9 leave
80483ab: c3 ret
80483ac: 90 nop
80483ad: 90 nop
80483ae: 90 nop
80483af: 90 nop
...
मैंने जो सीखा है उससे कुछ भी नहीं होता है, और चूंकि रिट के बाद भी निष्पादित नहीं किया जाएगा।
मेरा सवाल है: क्यों परेशान? ELF (linux-x86) किसी भी आकार के .text सेक्शन (+ मुख्य) के साथ काम नहीं कर सकता है?
मैं किसी भी मदद की सराहना करता हूं, बस सीखने की कोशिश कर रहा हूं।
80483af
, तो हो सकता है कि अगले समारोह को 8 या 16 बाइट्स में संरेखित करें।