Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [IJVM] Microperazioni

  1. #1
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202

    [IJVM] Microperazioni

    Ciao a tutti,

    Non riesco proprio a capire una cosa delle istruzioni della ijvm che gira su mic-1
    Come mai si deve costantemente aggiornarne il PC.

    Esempio nell' istruzione LDC_W
    all'inizio c'è un PC=PC+1;fetch
    Intuisco che questo è per prelevare lo spiazzamento con cui calcolare l'indirizzo ma perchè incrementare PC

    Ancora peggio l'istruzione ILOAD
    La 4° microistruzione della ILOAD è : PC=PC+1;fetch;wr
    Questa proprio non la capisco, in questo momento sono pronto per fare la scrittura perchè devo incrementare il PC e fare un fetch.. di non so cosa.

    GRazie mille-
    Che mestiere difficile.....essere da soli ancora di più

  2. #2
    Se PC è il program counter è abbastanza ovvio - se non incrementi il program counter andrai avanti all'infinito ad eseguire la stessa istruzione!
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Tutte le microistruzioni terminano con un goto Main1
    PC = PC + 1; fetch; goto (MBR)
    Questa di fatto fa passare all'istruzione successiva. (Almeno così ho capito)

    Ma l'incremento del PC nella ILOAD
    oppure nel BIPUSH non le capisco
    iloadl H = LV MBR contiene l'indice; copia LV in H
    iload2 MAR = MBRU + H; rd MAR = indirizzo della variabile locale da inserire nello stack
    iload3 MAR = SP = SP + 1 SP punta alla nuova cima dello stack; prepara la scrittura
    iload4 PC = PC + 1 ; fetch; wr Incrementa PC; ottiene il nuovo codice operativo; scrìve la cima dello stack
    iload5 TOS = MDR; goto Maini Aggiorna TOS

    bipush1 SP = MAR = SP * 1 MBR = byte da inserire nello stack
    bipush2 PC = PC + 1; fetch Incrementa PC, preleva il successivo codice operativo
    bipush3 MDR = TOS = MBR; wr; goto Maini Estende il segno
    Che mestiere difficile.....essere da soli ancora di più

  4. #4
    Ok allora, ho guardato un po' meglio.
    La fetch fa il fetch in MBR del byte situato nel flusso di istruzioni dove indica il PC. Ora, in linea di massima quando viene eseguito il microcodice di un certo opcode il PC punta al byte che indica di che opcode si tratta. Se l'opcode ha dei parametri, dovrà comunque leggerli dallo stream di istruzioni, ed è per questo che incrementa il PC e va a leggere i byte successivi, mettendoli nei registri che gli servono per eseguire effettivamente l'istruzione.
    Ultima modifica di MItaly; 14-06-2017 a 18:11
    Amaro C++, il gusto pieno dell'undefined behavior.

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.