A dire il vero sapevo che malloc può allocare poco più di 16MB di memoria. Io ne avrei bisogno solo 8...
Il mio problema è che nella mia vita di programmatore ho solo lavorato con i database e non ho mai fatto niente di questo tipo. La gestione della memoria a questo livello è assolutamente un campo da esplorare. Per iniziare ho scritto un programma in assembler per PIC per gestire due ram da 4MB. Mi sono fermato perché il PCB è un disastro da fare. Ho provato ma mi viene una scheda grossa come una scheda arcade degli anni 80!
Al momento sono al lavoro quindi non ho dietro il programma ma questo è il codice per come me lo ricordo:
chara *dato;
unsigned long bytes=8000000;
dato=(char *) malloc(bytes);
outportb(0x37a,0x020);
for (bytes=0;bytes<8000000;bytes++){
dato=inportb(0x37c);}
quindi, dichiaro il puntatore, ne faccio un cassetto di memoria, imposto la parallela in lettura e la leggo per 8 mb.
L'unico problema è che nonostante la dichiarazione di bytes come unsigned long, se vado a fare una printf di bytes durante il "riempimento", bytes arriva a poco più di 32000 (come se fosse un int) e poi diventa negativo