Visualizzazione dei risultati da 1 a 7 su 7

Hybrid View

  1. #1

    [C/Assembly] accesso diretto alla memoria

    salve a tutti

    vorrei creare un programma per accedere direttamente a un qualsiasi indirizzo di memoria per solo scopo di lettura ovviamente.

    a dirsi mi è sembrato semplice ma a farsi no.

    prima di tutto avrei bisogno di sapere qual è il tipo di variabile in cui un indirizzo di memoria( 0x... ) può essere salvato, quindi int o qualcosa d'altro.

    inoltre mi piacerebbe sapere una cosa a proposito della differenza tra indirizzo vero e proprio e indirizzo trattato dal C, o meglio: sto imparando l'assembly( quindi se saprete darmi una risposta inerente al linguaggio macchina ve ne sarò grato) e debuggando e aprendo la finestra della CPU ho visto che gli indirizzi per il computer sono formati giustamente da 8 cifre( siccome il mio è un sistema a 32 bit ), ma codeblock e credo anche tutti gli altri ambienti di sviluppo usa indirizzi di 6 cifre. ho pensato che potrebbe essere perchè elimina gli zeri più significativi, poichè se non sbaglio la memoria è suddivisa in segffset e quindi per esempio 0x23yyyy= 0x0023yyyy, ma non essendo sicuro ho preferito chiedere.

    grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    La memoria dei moderni sistemi operativi è virtuale e allocata per processo. Non accederai alla memoria fisica da nessun processo di tipo utente. Dovrai scrivere a livello kernel.

    Cosa vuoi fare tu praticamente? Cosa vuoi leggere esattamente?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    vorrei creare un programma che dato un indirizzo di memoria in ingresso potesse leggere il contenuto di ogni cella di memoria a partire da quell'indirizzo fino a un tot sempre inserito in ingresso.

    prima di tutto ho provato a fare alcune prove però con un indirizzo di memoria "costante" e attraverso un char* ho ottenuto il suo contenuto( mi sembra "ë" ) e mi sembrava fattibile. poi ho pensato di trasformare la stringa in input dell'indirizzo di memoria in un intero procedendo per mezzo degli operatori bit-wise( bit a bit ). ho preferito però informarmi se ciò era possibile e così ho fatto.

    grazie mille per la risposta
    non ho capito una cosa però: per virtuale cosa intendi?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non mi sono spiegato. La memoria a cui accedi è relativa al tuo processo non al sistema in generale.

    Per capirci meglio, se tu pensi di leggere o scrivere da locazioni di un "gioco", non lo potrai fare perché gli indirizzi saranno relativi al tuo processo e non al gioco.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    ah capito quindi non esiste un metodo per raggiungere il mio obbiettivo? neanche con l'assembly?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non è questione di assembly o C.

    E' il sistema di protezione della memoria usato dalla CPU che non ti consente di accedere alla memoria fisica da un processo utente.

    Non hai detto a cosa ti serve veramente ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    In realta è nato tutto come pura curiosità di poter esaminare ogni singola cella della memoria.. Niente di particolare

    grazie ancora di tutto allora

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.