Recupero delle istruzioni dalla memoria

0

Quindi, sono un noob in linguaggio assembly e istruzioni macchina.

Quando è arrivata la discussione su come implementare le chiamate funtion a livello di processore, qualcuno ha detto che l'istruzione CALL spinge l'indirizzo dell'istruzione successiva da eseguire sullo stack prima di aggiornare EIP e poi qualcuno chiesto come conosciamo l'indirizzo della prossima istruzione.

E poi qualcuno ha chiesto mentre EIP punta all'istruzione corrente in memoria come fa il processore a sapere quanti byte da EIP devono essere letti in modo da leggere l'intera istruzione.

Supponevo che tutte le istruzioni fossero di lunghezza fissa in modo che il processore potesse leggere quei molti byte come se costituisse l'istruzione e quindi il processo di decodifica determinerebbe quanti più byte devono essere letti per recuperare gli operandi. Tuttavia, durante la ricerca delle istruzioni, sono venuto a sapere che le dimensioni delle istruzioni variano.

Quindi torniamo alla stessa domanda: In che modo il processore conosce il numero di byte da leggere per ottenere le istruzioni dalla memoria nella cache delle istruzioni?

    
posta ans_venkat 18.02.2014 - 12:34
fonte

1 risposta

3

Nella maggior parte delle CPU, il puntatore dell'istruzione successiva viene aggiornato come prima parte dell'esecuzione dell'istruzione. La CPU, ovviamente, può determinare la lunghezza dell'istruzione dai suoi bit opcode e / o modificatori. Ogni architettura ha un modo diverso di indicarlo, ma è sempre ben definito.

    
risposta data 18.02.2014 - 13:18
fonte

Leggi altre domande sui tag