Emuliamo di tutto!

« Older   Newer »
  Share  
view post Posted on 15/1/2020, 17:36
Avatar

Noioso

Group:
Professionisti
Posts:
403

Status:


;)
Ormai sto cavalcando l'onda, e così ho preso in mano il vecchio ARM dell'Archimedes di 30 anni fa - che poi si è riciclato in ARM 7 ecc.ecc. ed è un po' ovunque. Mi aveva colpito, ai tempi, quel RISC, quello strano assembler...

Ci ho messo abbastanza poco a scrivere un emulatore in C: e devo dire che questa CPU è stata sicuramente una bella idea... MOLTO più semplice dell'8086 e così pratico, efficiente, semplice.

Edited by Dario Greggio - 15/1/2020, 20:09
 
Top
view post Posted on 15/1/2020, 20:06
Avatar

Immane Rompiball

Group:
Administrator
Posts:
18,287
Location:
Orlo esterno della cintura di Orione stella 1957

Status:


Ma... un RISC è proprio "reduced" bisogna spiegargli cosa sono i bit e come si fa a fare la somma di 1+1 :o:
 
Web  Top
view post Posted on 15/1/2020, 20:08
Avatar

Noioso

Group:
Professionisti
Posts:
403

Status:


mmmm no, non proprio....

Possiamo parlare dell'inefficienza di avere le istruzioni sempre lunghe 32bit: ma le potenzialità di quanto si può codificare in 32bit è notevole! l'idea delle istruzioni sempre condizionate è molto buona, la completa "ortogonalità" dei registri anche...

Ci sono 16 operazioni possibili, e bastano e avanzano. C'è lo shift incorporato...
 
Top
view post Posted on 17/1/2020, 20:14
Avatar

Immane Rompiball

Group:
Administrator
Posts:
18,287
Location:
Orlo esterno della cintura di Orione stella 1957

Status:


Boh, se lo dici te mi fido. ;)
 
Web  Top
view post Posted on 17/1/2020, 20:16
Avatar

Noioso

Group:
Professionisti
Posts:
403

Status:


 
Top
view post Posted on 19/1/2020, 14:42
Avatar

Noioso

Group:
Professionisti
Posts:
403

Status:


E' curioso: analizzando e misurando i tempi dei 5 emulatori che ho realizzato (6502, Z80, 8086, 8051 e ARM), il ciclo di esecuzione per istruzione è più o meno sempre lo stesso, ossia intorno ai 700nS (PIC @200MHz). Dal che si deduce che più è "potente" la CPU emulata, meglio si sfrutta il processore!

Probabilmente ha un suo senso perché la CPU che lavora è 32bit a sua volta...
 
Top
view post Posted on 21/1/2020, 18:14
Avatar

Noioso

Group:
Professionisti
Posts:
403

Status:


e ho trovato un bug nel compilatore, compilando per un dsPIC!! :D
 
Top
view post Posted on 21/1/2020, 18:23
Avatar

GWFstory

Group:
Administrator
Posts:
359
Location:
da qui...., quo, qua. Siete curiosi di saperlo, vero? No? Beh, tanto non ve l'avrei detto.

Status:


CITAZIONE
e ho trovato un bug nel compilatore, compilando per un dsPIC!!

Impossibile: di bug nei compilatori di Microchip non ce ne sono -_- <_< :unsure: :unsure:

Che tipo di bug hai trovato (così magari quando bestemmierò per un problema mi ricorderò che forse la colpa non è tutta mia e mi conviene analizzare il codice compilato).
 
Top
view post Posted on 21/1/2020, 18:29
Avatar

Noioso

Group:
Professionisti
Posts:
403

Status:


ci sono e ovviamente è impossibili spiegarli si subumani callcenter-like del "support"... !

In questo caso è colpa delle CPU nuove, i famosi dual core (ma non solo), ossia la serie dsPIC33CH o CK. Se usi una struct/union PACKED (ossia con membri piccoli, per mappare pochi bit per volta), il compilatore cerca di usare le nuove istruzioni BFEXT (trovi su internet) che manipolano un certo numero di bit all'interno di una word e... sbaglia a passargli l'indirizzo dispari, così va in eccezione di Memory Address!
Solo con le ottimizzazioni attive... e solo sui membri della struct che si trovano ad indirizzi dispari (naturalmente)
 
Top
8 replies since 15/1/2020, 17:36   89 views
  Share