Allora facciamo il punto della situazione, ho preparato un mini sorgente per riepilogare il tutto e risponderti alle domande; ho fatto due screen, uno con il dump della memoria (effettuato con un software per leggere la memoria) e l'altro screen è il programma in run-time sulla psp; rispondendo al tuo Ps., si con l'indirizzo 0x0a000000, siamo nel kernel, ma era puramente fittizio per fare facile l'esempio per chi leggeva.
codice:
#include <pspkernel.h>
#include <pspdebug.h>
PSP_MODULE_INFO("Prova per Html.it", PSP_MODULE_USER, 1, 1);
// definisce un alias per la funzione pspDebugScreenPrintf
#define printf pspDebugScreenPrintf
int main() {
// inizializzazione per l'uso dello schermo della PSP
pspDebugScreenInit();
// ritorno alla xmb mediante pressione pulsante home
SetupCallbacks();
char *p_loc, loc;
printf("Un char vale: %d \n\n", sizeof (char));
p_loc = (char *)0x08800002;
loc = *p_loc;
printf("0x08800002: %x \n\n", loc);
p_loc = (char *)0x08800001;
loc = *p_loc;
printf("0x08800001: %x \n\n", loc);
p_loc++;
loc = *p_loc;
printf("p_loc: %p ", p_loc);
printf("->: %x \n\n", loc);
char *nuovo_p;
nuovo_p = p_loc+1; // dopo p_loc++, p_loc dovrebbe valere 0x08800003
loc = *nuovo_p; // quindi loc dovrebbe valere 0x3c
printf("nuovo_p: %p ", nuovo_p);
printf("->: %x \n\n", loc);
// ti prego spiegami il risultato di questa!!!
p_loc = (char *)0x08800000;
loc = *p_loc;
printf("0x08800000: %x \n\n", loc);
// ferma il thread bloccando il risultato a schermo
sceKernelSleepThread();
return 0;
}
Cioè bo, qui è tutto perfetto, mi sa che ho fatto una gaffe... non ne sono sicuro ma mi sa che tentavo di fare una cosa del genere: p_nuovo = (char *)p_loc+1;
Un'ultima cortesia, riesci a spiegarmi perchè l'output dell'ultimo printf??