simpletron's People
simpletron's Issues
creazione branch
- welcome
- memory
- load
- execute
- cpu
- errors
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?
welcome message
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
merge welcome
welcome è pronto per il merge con il master
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
memory dump
fetch()
Il ciclo di istruzione di compone di tre parti:
- fetch
- incremento del program counter (
instructionCounter
nel nostro esempio) - 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
Descrizione del problema
merge (fast forward) di memory
modello cpu
rebase o merge?
decidi tu quale vuoi usare
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)
Simpletron in c++
Welcome() returns (no print)
La funzione welcome dovrebbe restituire la stringa da stampare piuttosto che stamparla direttamente
Welcome indent
Fix indentation
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.