Das, was funktioniert .comm bedeuten?
Ich habe gerade übersetzt das Programm,
#include <stdio.h>
int dam[1000][1000];
int main (int argc, const char * argv[]) {
//insert code here...
printf("Hello, World!\n");
return 0;
}
assembly mit gcc produziert,
.cstring
LC0:
.ascii "Hello, World!\0"
.text
.globl _main
_main:
pushl %ebp
movl %esp, %ebp
pushl %ebx
subl $20, %esp
call L3
"L00000000001$pb":
L3:
popl %ebx
leal LC0-"L00000000001$pb"(%ebx), %eax
movl %eax, (%esp)
call L_puts$stub
movl $0, %eax
addl $20, %esp
popl %ebx
leave
ret
.comm _dam,1000000,5
.section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5
L_puts$stub:
.indirect_symbol _puts
hlt ; hlt ; hlt ; hlt ; hlt
.subsections_via_symbols
Was tut .comm bedeuten? Hat dam verwenden, heap-Speicher, Stapelspeicher oder Daten Raum?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus der
as
Handbuch:Den .comm-Direktive reserviert Speicher in dem Daten-Abschnitt. Die Lagerung wird durch den Bezeichner name. Die Größe wird in bytes gemessen und muss eine positive Ganzzahl sein. Name kann nicht vorgegeben werden. Die Ausrichtung ist optional. Wenn Ausrichtung angegeben wird, wird die Adresse, der name ist ausgerichtet auf ein Vielfaches der Ausrichtung.
Quelle: https://docs.oracle.com/cd/E26502_01/html/E28388/eoiyg.html