Alcuni codici NOP sono trattati in modo diverso rispetto ad altri?

11

Sono curioso di questo, diciamo che ho:

00000000001 90                              nop        
00000000002 90                              nop        
00000000003 90                              nop 

Viene eseguito esattamente come questo?

00000000001 0F1F00                          nop        dword [ds:rax]

Quale effetto avrebbe il secondo esempio rispetto al primo?

    
posta Tom Boobas 29.07.2012 - 04:57
fonte

2 risposte

2

Dipende dall'architettura della macchina. Il classico KA-10 (pdp-10) aveva molti codici nop, probabilmente una conseguenza del suo set di istruzioni molto regolare, e il fatto che tutto fosse implementato da componenti descreti, non da un microcodice. Alcuni NOP fanno riferimento alla memoria, alcuni sono stati saltati test che non sono mai saltati, ma hanno comunque verificato la condizione che potrebbe aver causato un salto, e così via. "JFCL 0" è stato pubblicizzato nel manuale come il nop più veloce.

    
risposta data 29.07.2012 - 22:14
fonte
0

Sembra che il secondo esempio debba essere eseguito più rapidamente del primo. Nel primo esempio verranno eseguite tre istruzioni separate. Nel secondo, solo una istruzione. I NOP multi-byte sono pensati per essere utilizzati per i "suggerimenti" della CPU (esattamente come e quando è apparentemente riservato ). Possono essere utili per scopi di allineamento (per avviare un ciclo stretto su una linea della cache), ma attualmente non hanno altro uso. Non è chiaro se la CPU valuti effettivamente gli argomenti, quindi non è possibile dire se aumenta il tempo di decodifica dell'istruzione o incorre in una penalità di accesso alla memoria. Chiunque abbia un buon ICE vuole testare uno di questi e vedere quali indirizzi appaiono su una traccia del bus?

    
risposta data 30.07.2012 - 15:10
fonte

Leggi altre domande sui tag