GithubHelp home page GithubHelp logo

simpletron's People

Contributors

fabioztessitore avatar teocoluccio avatar

Watchers

 avatar  avatar

simpletron's Issues

divisione in moduli

il simulatore è praticamente funzionante, puoi dargli in pasto un programma scritto nel suo linguaggio e lui lo esegue. Bisognerebbe creare la funzione per il caricamento del programmi all'avvio e bisognerebbe gestire gli errori, però al momento queste cose non ci interessano.

Invece bisogna individuare gli "oggetti" che compongono il nostro simulatore e creare per ognuno di essi un modulo separato.

tu quali "oggetti" vedi?

Execute

La funzione execute deve svolgere il suo compito in base al valore memorizzato in operationCode.
Ad esempio, la prima istruzione del programma è una READ, legge un valore e lo memorizza nella locazione di memoria indicata da operand

rebase interattivo

sia il ramo master che il ramo cpu devono essere semplificati. un solo commit può bastare

rebase NON interattivo

ora facciamo il rebase (non interattivo, quindi senza -i)

cominciamo a fare il rebase di memory. Lo vogliamo accodare a master.

$ git checkout memory
$ git rebase master

qui ti darà degli errori perché tutti e due i rami modificano main.c
Prova un

$ git status

Aggiusta il file main.c (attento, è incasinato)

$ git add main.c
$ git rebase --continue

Qui dovrebbe darti problemi un'altra volta perché i commit sono due su memory
Rimodifica main.c (stavolta dovrebbe essere un po' piu' semplice) e quindi

$ git add main.c
$ git rebase --continue

Ora dovrebbe andare.
Guardati il log e fai push forzato

fetch()

Il ciclo di istruzione di compone di tre parti:

  1. fetch
  2. incremento del program counter (instructionCounter nel nostro esempio)
  3. execute

Per prima cosa implementeremo la funzione fetch().
Deve caricare dalla memoria la prossima istruzione da eseguire (memory[instructionCounter]) e copiarla nel registro instructionRegister.
Poi deve prelevare il codice di operazione (prime due cifre) e l'operando (seconde due cifre) e memorizzarli rispettivamente in operationCode e operand.

Es.
quando inizia il programma di esempio, instructionCounter vale 0
quindi verrà prelevata l'istruzione 1009
Al termine della funzione fetch() i registri della cpu avranno valore:

accumulator:           +0000
instructionCounter:       00
instructionRegister:   +1009
operationCode:            10
operand:                  09

modello cpu

creiamo un modello di cpu.

dovranno essere presenti i seguenti registri:

  • accumulator
  • instructionCounter
  • instructionRegister
  • operationCode
  • operand

inoltre bisogna creare una funzione per il dump di questi registri il cui output sia:
dump_cpu

incrementare l'instructionCounter

ps. ho riorganizzato la funzione main(), quindi fai un pull

Dopo aver caricato l'istruzione in memoria (fase di fetch), il processore incrementa l'indice di istruzione (nel nostro caso instructionCounter)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.