Je travaille depuis deux semaines sur JamVM, une machine virtuelle Java petite mais puissante.C/Posix Questions
Maintenant, je suis en train de comprendre comment la mémoire est mise en œuvre et je suis coincé sur deux C problèmes stupides:
char *mem = (char*)mmap(0, args->max_heap, PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON, -1, 0);
-> Le -1 paramètre signifie un descripteur de fichier, qu'est-ce que signifier? (J'ai déjà lu l'homme mmap, mais je ne l'ai pas trouvé, peut-être ai-je mal compris ...).
heapbase = (char*)(((uintptr_t)mem+HEADER_SIZE+OBJECT_GRAIN-1&)~(OBJECT_GRAIN-1)) HEADER_SIZE;
-> Qu'est-ce que 1 &? Je ne trouve pas dans la spécification C ...
Merci,
Yann
S'il s'agissait de deux questions distinctes, vous pourriez donner à chacune un titre utile. –
'-1 &) ~ (' n'est même pas légal C (un compilateur devrait se plaindre d'un jeton manquant), êtes-vous sûr que ce n'est pas -1) & ~ ('?, ce qui signifie ET NON, (habituellement utilisé pour transformer un bit off) – Wiz
@Wiz: Dans ce cas, OBJECT_GRAIN est probablement une puissance de 2, donc si le code était '-1) et ~' il arrondissent 'mem + HEADER_SIZE' au multiple suivant de' OBJECT_GRAIN'. –