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?