Première fois l'apprentissage de l'assemblée, est-ce dire un mot de la taille est de 8 octets?

Quand je pause principal, il ressemble à la ligne en gras est là que j'ai est créé et initialisé. Je pense que je vais à ce tout faux, je suis en train d'examiner x86_64 assemblée à partir d'un livre qui explique x86. Cela semble bizarre et je suis assez sûr que je ne comprends pas, vu que dans ce livre il dit qu'il va consulter un word et dword de 4 octets. Si je pouvais avoir une explication à l'aide de mon incognisance, il serait grandement apprécié.

    (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>
Comment avez-vous figuure de ce qu'un mot de taille est de 8 octets?
Comme le processeur est 64 bits, je dirais que le mot est de 64 bits de long, comme l'a confirmé par des adresses sur la gauche. Alors, oui, un mot est de 8 octets. Peut-être que votre livre se réfère à un 32 bits processeur.
word est de 64 bits de long? nope.jpg
Le terme "mot" signifiait quelque chose dans les temps anciens, quand le bus de données de taille était un match avec de l'ALU et le registre de la taille. Ces jours sont révolus depuis longtemps, et le terme obtenu désespérément ambigu. Un processeur 32 bits comme l'original Pentium déjà utilisé une version 64 bits du bus de données. Et d'un processeur 64 bits a 48 bits du bus d'adresse. Si ce livre parle de "mot" beaucoup alors vous avez certainement devriez chercher un autre.
Eh bien, non, il n'est pas x86_64 compilateur qui utilise 8 octets pour un int. Beaucoup trop cher. Une architecture 64 bits de ne pas vous acheter deux fois la quantité de cache.

OriginalL'auteur John Holly | 2013-11-28