Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [ASM] Programmazione a basso livello: Qualcuno si intende di IJVM?

    Ciao a tutti, ho realizzato una nuova istruzione x il repertorio di codici operativi della IJVM. Quest'istruzione legge 2 operandi dalla memoria, li somma e poi inserisce il risultato in cima allo stack. Il problema è ke invece di prelevare il secondo operando, preleva 0.
    l'istruzione è
    IADDMEM varnum varnum
    e il codice di questa istruzione è:

    H = LV
    PC=PC+1;fetch
    MAR=MBRU+H;rd
    PC=PC+1;fetch
    H=MDR;
    MAR=MBRU+H;rd
    MAR=SP=SP+1
    TOS=MDR=H+MDR;wr
    PC=PC+1;fetch;goto(MBR)

    la parte del programma assembly che usa quest'istruzione è:

    ISTORE a
    ISTORE b
    IADDMEM a b

    Grazie

  2. #2
    Utente di HTML.it L'avatar di cso
    Registrato dal
    Aug 2004
    Messaggi
    2,050
    Lo stack ha una particolarità:
    LIFO=Last In First Out
    cioè il primo elemento che inserisco nello stack è l'ultimo a essere tirato fuori quindi ti faccio un esempio in Assembly x86:
    codice:
    MOV AX,01
    PUSH AX
    MOV AX,02
    PUSH AX
    MOV AX,03
    PUSH AX
    POP AX   ;IN QUESTO MOMENTO AX VALE 03
    POP AX   ;IN QUESTO MOMENTO AX VALE 02
    POP AX   ;IN QUESTO MOMENTO AX VALE 01
    Spero di essere stato chiaro

  3. #3

    Il problema è un altro

    Il problema non è nello stack, lo so ke va gestito secondo la politica FIFO ma il problema è nell'accesso alla memoria, in quanto invece di prelevare il secondo parametro preleva uno 0

  4. #4
    Utente di HTML.it L'avatar di cso
    Registrato dal
    Aug 2004
    Messaggi
    2,050
    quello che hai postato non sembra codice in assembly x86...non saprei dirti dov'è l'errore ma a volte c'è proprio dove sei sicuro che non ci sia!!!!!!!!!!!

  5. #5
    Quello postato è ancora a + basso livello dell'assembly, è microcodice

  6. #6
    Utente di HTML.it L'avatar di cso
    Registrato dal
    Aug 2004
    Messaggi
    2,050
    penso che qui sei l'unico a sapere un linguaggio del genere sempre se linguaggio si può definire!!!

    ma non disperare, infondo esiste un "linguaggio" ancora più a basso livello del microcodice:

    il BINARIO

  7. #7
    Utente di HTML.it L'avatar di Gigi84
    Registrato dal
    May 2001
    Messaggi
    569
    ma tu gli operandi li vuoi prendere dallo stack o li vuoi prendere come parametri??

    perchè con
    codice:
    ISTORE a
    ISTORE b
    li salvi sulla cima dello stack ma poi li passi come parametri
    codice:
    IADDMEM a b
    ho guardato un po' il codice che hai postato, ma non l'ho capito tanto, secondo me hai fatto un po' di casino tra dati e indirizzi.. boh.. conta che io ste cose le ho fatte l'anno scorso in info2

    cmq se dovessi fare l'istruzione che mi somma due numeri presi dalla cima dello stack e pone il risultato ancora sulla cima dello stack (mangiandosi gli operandi) farei:

    codice:
    MAR = SP = SP - 1, rd            //leggo il secondo operando, il primo era sulla cima
                                     dello stack e quindi in TOS, e aggiorno SP
    H = TOS                          //metto il primo operando in h
    MDR = H + MDR, wr                //finito il ciclo di lettura ho il secondo operando in MDR,
                                     così lo sommo ad H, metto il tutto in MDR (e in TOS) 
                                     e poi scrivo(MAR punta alla cima dello stack).
    PC = PC + 1, fetch, goto(MBR)
    però mi sa che è sbagliata sulla fase in cui si passa all'struzione successiva (ultima riga)!

    ciao!
    Take it easy babe.. take it as it comes

  8. #8
    Utente di HTML.it L'avatar di Gigi84
    Registrato dal
    May 2001
    Messaggi
    569
    Originariamente inviato da cso
    penso che qui sei l'unico a sapere un linguaggio del genere sempre se linguaggio si può definire!!!

    ma non disperare, infondo esiste un "linguaggio" ancora più a basso livello del microcodice:

    il BINARIO
    quel microcodice è un linguaggio formato da microistruzioni (è tutto micro.. :maLOL: ) che serve per programmare le istruzioni di un processore IJVM (JVM che tratta solo numeri interi), architettura inventata da Mr. Tanenbaum! VVoVe: :inchino:
    Take it easy babe.. take it as it comes

  9. #9
    Utente di HTML.it L'avatar di cso
    Registrato dal
    Aug 2004
    Messaggi
    2,050
    Solo chi è pazzo oppure chi è obbligato impara questo "linguaggio"...

    dal tuo avatar direi la 1° :maLOL: :maLOL: :scherzo:

    Tanto di cappello anche all'assembly (per difficoltà)

  10. #10
    Allora il microcodice non somma 2 numeri ke sono in cima allo stack
    ma 2 numeri ke sono contenuti nell'area delle variabili locali. Il problema è ke quando vado a prendere il secondo operando dalla memoria preleva zero invece del numero ke dovrebbe prendere

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 © 2024 vBulletin Solutions, Inc. All rights reserved.