जब मैं मुख्य तोड़ता हूं तो ऐसा लगता है कि बोल्ड लाइन है जहां मुझे बनाया जा रहा है और शुरू किया गया है। मुझे लगता है कि मैं इस सब गलत पर जा रहा हूं, मैं x86_64 असेंबली को एक पुस्तक से जांचने की कोशिश कर रहा हूं जो x86 को समझा रहा है। यह अजीब लगता है और मुझे पूरा यकीन है कि मैं इस पुस्तक में देखकर समझ में नहीं आता हूं कि वह कहता है कि वह 4-बाइट्स के रूप में एक शब्द और शब्द का उल्लेख करेगा। अगर मुझे अपनी पहचान में सहायता करने के लिए स्पष्टीकरण मिल सकता है तो इसकी सराहना की जाएगी। पहली बार असेंबली सीखना, क्या यह कह रहा है कि एक शब्द का आकार 8-बाइट है?
(gdb) list
1 #include <stdio.h>
2
3 int main()
4 {
5 int i;
6 for(i=0; i < 10; i++)
7 {
8 printf("Hello, world!\n");
9 }
10 return 0;
(gdb) disassemble main
Dump of assembler code for function main:
0x0000000100000f10 <+0>: push rbp
0x0000000100000f11 <+1>: mov rbp,rsp
0x0000000100000f14 <+4>: sub rsp,0x10
0x0000000100000f18 <+8>: mov DWORD PTR [rbp-0x4],0x0
0x0000000100000f1f <+15>: mov DWORD PTR [rbp-0x8],0x0
0x0000000100000f26 <+22>: cmp DWORD PTR [rbp-0x8],0xa
0x0000000100000f2d <+29>: jge 0x100000f54 <main+68>
0x0000000100000f33 <+35>: lea rdi,[rip+0x48] # 0x100000f82
0x0000000100000f3a <+42>: mov al,0x0
0x0000000100000f3c <+44>: call 0x100000f60
0x0000000100000f41 <+49>: mov DWORD PTR [rbp-0xc],eax
0x0000000100000f44 <+52>: mov eax,DWORD PTR [rbp-0x8]
0x0000000100000f47 <+55>: add eax,0x1
0x0000000100000f4c <+60>: mov DWORD PTR [rbp-0x8],eax
0x0000000100000f4f <+63>: jmp 0x100000f26 <main+22>
0x0000000100000f54 <+68>: mov eax,0x0
0x0000000100000f59 <+73>: add rsp,0x10
0x0000000100000f5d <+77>: pop rbp
0x0000000100000f5e <+78>: ret
End of assembler dump. </code>
आपने इस बात से कैसे पता लगाया कि एक शब्द का आकार 8 बाइट है? – ScarletAmaranth
प्रोसेसर 64 बिट है, इसलिए मैं कहूंगा कि शब्द 64 बिट लंबा है, जैसा कि बाईं ओर दिए गए पते द्वारा पुष्टि की गई है। फिर, हाँ, एक शब्द 8 बाइट्स है। शायद आपकी पुस्तक 32 बिट प्रोसेसर को संदर्भित करती है। – HAL9000
@ HAL9000 शब्द 64 बिट लंबा है? nope.jpg – ScarletAmaranth