Che cosa possiamo imparare dai linguaggi di assemblaggio inattivi? [chiuso]

7

Ci sono ancora gruppi di programmatori che supportano vecchi microprocessori, ad esempio, Z80, 6510 , 68000, ecc. Cosa può impariamo dai vecchi linguaggi di assemblaggio in un momento in cui la programmazione funzionale sta diventando di moda?

Modifica

Immagino che ci sarebbe molto da imparare per i sistemi embedded. Tuttavia, gli stili assembler si applicano in misura più limitata per la programmazione Web in cui viene utilizzata la memorizzazione nella cache e la dimensione delle routine non ha molta importanza. Le linee guida per le best practice per gli stili incorporati e Web sono molto diverse (gli stili server e client sono diversi). Ad esempio, l'ottimizzazione di un multiplexer di sprite da eseguire, ad esempio, sotto i 30 byte, è diversa dai tipi di ottimizzazione che faremmo per il codice che intendiamo eseguire su un server web. I tipi di ottimizzazione sono molto diversi. Il multiplexer sprite viene scritto con l'utilizzo della memoria come priorità principale, ma per quanto riguarda la nostra routine del server Web, vogliamo le massime prestazioni che hanno poco a che fare con l'uso efficiente della memoria, a meno che non stiamo parlando di risorse condivise.

    
posta CarneyCode 09.04.2011 - 15:02
fonte

7 risposte

2

È passato molto tempo da quando ho fatto un assemblatore ... Ricordo di aver imparato su un 68k al college, la ragione era che l'assemblatore era più semplice con i chip più vecchi, quindi è più facile apprendere i fondamenti senza alcuna intelligente ottimizzazione la via. Quindi forse sono ancora utili come piattaforme di insegnamento?

Non ho il riferimento alla programmazione funzionale - stai dicendo che FP in qualche modo sostituisce la programmazione di assemblaggio?

    
risposta data 11.04.2011 - 18:46
fonte
4

La cosa principale per queste piattaforme meno recenti è essenzialmente:

How to code efficiently when memory is tight and cpu cycles are few.

In un'epoca in cui la tipica risposta è "aggiorna l'hardware" è molto interessante vedere come spremere le massime prestazioni da ciò che hai.

Gli Z80 e 6502/6510 sono buoni punti di partenza perché erano molto diffusi (CP / M-80 e C64 rispettivamente) con un sacco di codice scritto.

Vedi ad esempio i programmi di scacchi elencati qui - link - Sargon ha giocato un gioco rispettabile, e lo ZX81 ha funzionato in 1 KB di RAM.

    
risposta data 01.01.2012 - 12:59
fonte
2

È un buon modo per essere introdotti alla programmazione del linguaggio assembly. x86 è diventato un vero casino nel corso dei decenni, ed è usato quasi ovunque il programmatore medio lo programmerebbe in quel modo. Iniziare con qualcosa di più coerente (come M68K, per esempio) ha dei veri vantaggi.

    
risposta data 11.04.2011 - 19:27
fonte
2

Se sei interessato alla storia del computer, come siamo arrivati dove siamo ora. se si esamina un sacco di assemblaggi oggi, la maggior parte delle volte la maggior parte delle persone guarda al codice generato dal compilatore, non all'assemblaggio scritto a mano. Il 6502 è un ottimo esempio se un processore apprende. Per prima cosa ci sono molte rom dai classici giochi arcade in piedi come Asteroids. Puoi imparare il set di istruzioni scrivendo un disassemblatore. Scrivere un disassemblatore per un set di istruzioni a lunghezza variabile è una sfida di programmazione educativa in sé e per sé, vale la pena, o almeno come un programma di risoluzione di labirinti, vale almeno arrivare al punto in cui capisci cosa devi fare per risolvilo. Poiché questi erano assemblatori codificati a mano, non dovevano e non seguivano le convenzioni di programmazione come farebbe un compilatore. Alcune di queste rom intenzionalmente o di proposito hanno in loro alcune trappole che fanno scoppiare un disassemblatore. Torna all'esperienza di apprendimento del disassemblatore. Quindi puoi esaminare lo stile di programmazione, come potrebbe essere simile alla programmazione generale in qualsiasi lingua e il tipo di trucchi e abitudini usati dal programmatore per quel set di istruzioni. La 6502 occupa una posizione importante nella storia dell'informatica, nonostante il passo di vendite che ha portato molti a pensare che Apple avesse qualcosa a che fare con qualsiasi cosa (erano anche dietro a commodore e tandy / radio shack nel movimento dei personal computer) la 6502 era il comune fattore nel passaggio dai computer di condivisione del tempo a quelli che potreste permettervi di possedere. Così come il mondo dei videogiochi sia atari vcs (a.k.a atari 2600) che stand up arcade. Più tardi lo z80, e un numero di altri ha preso il sopravvento e ci ha portato dove siamo ora. il 6502 in particolare ha una modalità di indirizzamento, che il msp430 può anche sfruttare a suo modo. Si può pensare che il 6502 sia affamato di registri, ma considera i registri effettivi solo registri temporanei e la memoria zero della pagina con 256 registri.

Raccomando anche di tornare indietro alla 8088/86 per ottenere la cronologia di dove è nata la famiglia attuale x86, confrontarla con la z80, la 8080 e altre che sono nate da una fonte / concetto comune e si sono evolute da sole . x86, anche quello moderno può essere considerato un set di istruzioni morte è così doloroso e arcaico, semplicemente non morirà. Perché preoccuparsi di tradurre in qualche altro set di istruzioni all'interno, perché non fare ciò che ha fatto DEC con Alpha che esegue windows e ricompilare dinamicamente il programma in un altro set di istruzioni, permettendo l'esecuzione di programmi legacy, il motivo per cui microsoft e Intel sono ancora in attività, ma allontanarsi da una scarsa interfaccia intermedia tra il codice sorgente e le unità di esecuzione.

Forse la lezione più importante è che i processori sono simili come sono diversi, caricano, memorizzano, l'insieme di base delle operazioni di alu, xor, add, ecc. Allo stesso tempo anche con C, i linguaggi di programmazione non sono mai stati realmente le caratteristiche dell'hardware, devi ancora immergerti nell'assemblaggio per sintonizzare le prestazioni. le librerie di base della lingua come memcpy per C sono sintonizzate a mano asm per piattaforma perché la lingua non la taglia.

Scoprirai anche che molti dei processori che ritieni obsoleti sono ancora disponibili per la vendita, sicuramente un piccolo venditore o due con una piccola quota di mercato, ma alcuni mercati o aziende si affidano all'8051 per esempio (hai ha usato una scheda di rete ultimamente, ha inviato pacchetti TCP / IP a chiunque? Come hai ottenuto questa pagina web, c'erano un certo numero di 8051 mac guidati e il flusso del tuo pacchetto, anche leggendo i fogli dati e programmando quelle parti che non realizzi sono basati su 8051, a meno che tu non abbia avuto la cronologia o abbia posto la domanda giusta al venditore durante la programmazione di tali parti). zilog still lives (z80) (e il coniglio è un semiconduttore modificato z80), le forme del 6502 sono ancora in vendita, il hc11, ecc. ecc.

    
risposta data 13.01.2012 - 04:16
fonte
1

Puoi imparare che cos'è il calcolo: spostare 0 e 1 da una posizione all'altra, a volte facendoli scontrare in una ALU.

    
risposta data 11.04.2011 - 09:49
fonte
0

Penso che tu possa imparare molto su una macchina specifica su cui devi lavorare. Ad esempio se si vuole emulare un vecchio sistema come il NES. Dovresti conoscere 6502.

    
risposta data 11.04.2011 - 07:53
fonte
-1

Non penso che il "linguaggio assembly" sia obsoleto, così come l'hardware è obsoleto. Non c'è alcuna differenza significativa tra i linguaggi di assemblaggio vecchi e nuovi, se si è in grado di ignorare i vasti cambiamenti nell'architettura della macchina a cui sono indirizzati, la sintassi è quasi la stessa.

Quindi, direi non molto di niente.

    
risposta data 11.04.2011 - 17:48
fonte

Leggi altre domande sui tag