Erste Zeit mit dem lernen von Montage -, ist dies ein Wort zu sagen die Größe ist 8 Byte?

Wenn ich brechen, Hauptsache es sieht aus wie die Fette Linie ist, wo ich gerade erstellt und initialisiert. Ich denke, ich werde an dieser alles falsch, ich versuche zu prüfen, x86_64 Baugruppe aus einem Buch, das erklärt, wie x86. Dies scheint seltsam und ich bin mir ziemlich sicher, dass ich verstehe nur nicht, zu sehen, wie in diesem Buch, er sagt, er werde Sie finden, um ein word-und dword als 4-bytes. Wenn ich könnte, erhalten Sie eine Erklärung zu Hilfe mein incognisance es würde sehr geschätzt werden.

    (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>
  • Wie hast du figuure sich daraus, dass eine word-Größe 8 bytes?
  • Als Prozessor ist 64-bit ich würde sagen, dass Wort ist 64-bit lang, so bestätigt von Adressen auf der linken Seite. Dann, ja, ein Wort ist 8 bytes. Vielleicht ist Ihr Buch bezieht sich auf ein 32-bit-Prozessor.
  • Wort ist 64-bit lang? nope.jpg
  • in einer 64-bit-Architektur Wort ist 64-bit lang: en.wikipedia.org/wiki/64-bit_computing stackoverflow.com/questions/5295903/...
  • Sorry, habe vergessen zu Fett, aber warum ist diese zweite Linie geht zurück 8 von der base-pointer und die Bedeutung der einen zurück 4 @ScarletAmaranth? <+8>: mov DWORD PTR [rbp-0x4],0x0 <+15>: mov DWORD PTR [rbp-0x8],0x0
  • Ich stehe korrigiert, sieht aus wie ein Weg, der Blick auf die word erlaubt, für diese interpretation, danke.
  • Der Begriff "Wort" bedeutet etwas in den alten Tagen zurück, wenn die Daten-bus-Größe war ein Spiel mit dem ALU und register Größe. Diese Zeiten sind lange vorbei und der Begriff bekam hoffnungslos mehrdeutig. Ein 32-bit-Prozessor wie das original Pentium bereits ein 64-bit-Daten-bus. Und eine 64-bit-Prozessor mit 48-bit-Adressbus. Wenn dieses Buch spricht über "Wort" eine Menge dann sind Sie definitiv sollten, anderen zu suchen.
  • Es war reden mehr in Bezug auf den gdb Argumente, die verwendet werden, um zu untersuchen, Größen. Es ist nicht so, dass alt ein Buch ist. Ich war nur neugierig und nur für einige Schließung und so kann ich mark diese beantwortet... ein int ist 8 bytes, weil dieser ist 64-bit-assembly, das macht Sinn für mich. Maths.jpg
  • Nun, Nein, es gibt keine x86_64 compiler verwendet 8 Byte für eine int. Viel zu teuer. Ein 64-bit-Architektur nicht kaufen Sie die doppelte Menge an cache.

InformationsquelleAutor John Holly | 2013-11-28
Schreibe einen Kommentar