|
|
|
![]() |
|
Strumenti |
![]() |
#81 | |
Member
Iscritto dal: Oct 2011
Messaggi: 146
|
Quote:
|
|
![]() |
![]() |
![]() |
#82 |
Member
Iscritto dal: Oct 2011
Messaggi: 146
|
proprio per questo mi aspettavo un po' di supporto
![]() |
![]() |
![]() |
![]() |
#83 | ||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Detto in altri termini, tu realizzi un programma in linguaggio macchina: come fai da questo a dare in pasto alla macchina il corrispondente codice binario? Ciò che ho descritto prima su quello che si faceva nella prima metà degli anni '80 è un chiarissimo esempio della situazione in cui ci si trovava quando si doveva scrivere qualcosa in linguaggio macchina. Ma "stranamente" su quello che ho scritto non hai avuto nulla da dire... ![]() Quote:
Adesso dimmi cosa trovi di sbagliato in quello che ho scritto in questo commento, come nei miei precedenti, e in particolare nel #81. Grazie.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys Ultima modifica di cdimauro : 29-05-2016 alle 18:08. Motivo: Corretto refuso |
||
![]() |
![]() |
![]() |
#84 | |||||
Senior Member
Iscritto dal: Sep 2010
Messaggi: 4353
|
Quote:
Essendo la sintassi per forza di cose diverse (i simboli del vocabolario è immensamente più ricco nell'assembly) i 2 linguaggi sono diversi... La cosa che accomuna il linguaggio macchina e l'assembly è la semantica. il significato delle produzioni del linguaggio... Quote:
Quote:
ti risulta che il tuo PC prima di eseguire un aggiornamento di Windows effettui la compilazione? ![]() Quindi si, che sia compilato in assembly, in C, in basic, il PC che usufrirà del programma avrà per lo più la pappa pronta... comunque anche il termine compilazione è errato per l'assembly, visto che si usa un assemblatore (assembler). Quote:
![]() ![]() scherzo Quote:
ma chi conosce l'assembly di fatto conosce il linguaggio macchina.... Ti faccio un'esempio di un'istruzione MIPS. add $4, $4, $7; ASSEMBLY 00000000100001000011101101010000 LINGUAGGIO MACCHINA Non c'è niente di particolarmente difficile passare dall'assembly a linguaggio macchina ( ho qualche dubbio su architetture più complesse in cui le dimensioni dei campi variano continuamente e le istruzioni sono innumerevoli), certo è impossibile da correggere e difficile da scrivere (nel senso devi contare il numero di zeri e uno....) ![]() detto questo il vero problema è essere capce di usare l'assembly Ultima modifica di tuttodigitale : 30-05-2016 alle 02:04. |
|||||
![]() |
![]() |
![]() |
#85 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Infatti il problema è con le architetture più complesse, dove passare da assembly a linguaggio macchina non è, diciamo, una passeggiata.
![]() P.S. Sto prendendo appunti. ![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
#86 | |
Senior Member
Iscritto dal: Sep 2010
Messaggi: 4353
|
Quote:
![]() edit ho trovato questo: ![]() Ultima modifica di tuttodigitale : 29-05-2016 alle 19:20. |
|
![]() |
![]() |
![]() |
#87 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Esatto. Come la breadboard che usavamo al triennio dell'ITIS ('87-90) che integrava un 8086 e un mini display esadecimale con annesso tastierino esadecimale, per introdurre le sequenze che componevano il programma in linguaggio macchina (scritto rigorosamente a manina su qualche quadernone, o stampato su carta se si trattava di roba più complessa).
![]() EDIT. Ma LOL ![]() ![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
#88 |
Senior Member
Iscritto dal: Sep 2010
Messaggi: 4353
|
|
![]() |
![]() |
![]() |
#89 |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 3826
|
Vecchi bacucchi
![]() Io in assembly ho programmato su un emulatore del vecchio 8086 e su un microcontrollore della Atmel, ma ora mi sfugge il nome (AT90S qualcosa). ![]() |
![]() |
![]() |
![]() |
#90 |
Member
Iscritto dal: Oct 2011
Messaggi: 146
|
cari il mio pensiero l'ho già espresso a più riprese, e assolutamente non voglio imporlo, e molte delle risposte che potrei continuare a dare sarebbero ridondanti.
certamente non è giusto prendere singolarmente i miei commenti e dare interpretazioni a propria convenienza... non dico assolutamente di perdere tempo, ma se rileggete tutti i miei commenti dal primo all'ultimo senza partire dal presupposto ma questo è utile o inutile, a che serve ecc...distaccandosi dalla praticità/comodità, distaccandosi anche dai computer(mi sembra di non aver utilizzato nemmeno una volta la parola "computer" al massimo "macchina",ho parlato addirittura di "lampadina")ho fatto un discorso teorico con esempi (volutamente esasperati essendo che perlopiù si parlava di un astrazione della realtà), che il buon cdimauro avrà di certo riscontrato sui testi da lui letti scusami cdimauro ma il commento #81 non era tuo, era un altro numero? detto questo ribadisco è stato un piacevole confronto |
![]() |
![]() |
![]() |
#91 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
@Vi7o: l'81 è il mio.
Comunque di quello che hai scritto non ricordo di aver riscontrato qualcosa sul Tanenbaum, il Patterson, o qualche altro testo. Per il resto, mi pare di capire che non hai avuto alcuna esperienza sull'argomento. EDIT: Antonio m'ha fregato per 1 minuto. ![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
#92 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Surreale direi che sia proprio la parola giusta.
![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
#93 |
Senior Member
Iscritto dal: Nov 2007
Messaggi: 8368
|
ciao, una curiosita' che mi si e' rinfocolata leggendo il thread: ma i famigerati demo in assembly che qualche era geologica fa giravano su macchine di classe molto-pre-pentium (e che se non ricordo male nacquero sotto amiga) e facevano cascare la mascella, posto che fossero scritti in assembly... era una necessita' per motivi prettamente tecnici o anche ad esempio ancora non esistevano altri linguaggi utili ad ottenere lo stesso risultato?
|
![]() |
![]() |
![]() |
#94 | |||||||||
Member
Iscritto dal: Oct 2011
Messaggi: 146
|
Premesso che mi ero già ritirato da questa discussione, per educazione quindi ti rispondo spero di essere il più esaustivo possibile:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
la velocità di esecuzione del codice generato è la stessa, solo che con l'assembly anche se decisamente più conveniente da parte tua facevi o meglio l'assembler faceva un passaggio in più, non ho mai detto da nessuna parte che è più bello o più figo scrivere in linguaggio macchina altrimenti non ci sarebbe stato bisogno dell'assembly sul Tanenbaum che forse è quello che descrive meglio e in modo più marcato i livelli dell'elaboratore trovi una slide simile a quella che avevo linkato dove l'assembly si trova a Livello 4, il linguaggio macchina al Livello 3 per favore però non iniziamo a discutere riguardo i livelli inferiori ti prego... Spero di aver risposto a tutte le domande pendenti a questo punto anche se la maggior parte erano state ampiamente trattate in post precedenti, anzi alcune era doppie già nello stesso post. |
|||||||||
![]() |
![]() |
![]() |
#95 |
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 4228
|
Secondo me il punto centrale di tutta la questione è questo:
da quello che scrivi (magari mi sbaglio) sembra che tu sia convinto che il codice assembly venga compilato prima di ogni esecuzione del programma. Quello che normalmente succede è che il codice assembly viene compilato UNA VOLTA dal computer del programmatore, che poi distribuisce "la pappa pronta" a MILIONI di utenti. QUINDI L'UTENTE CHE AVVIA IL PROGRAMMA NON DEVE MAI COMPILARE NULLA, nemmeno al primo avvio, perché ha già il codice oggetto pronto per essere eseguito! In questo l'esempio delle due ferrari era perfettamente calzante: quale delle due ferrari è più veloce? La ferrari già costruita o quella ancora da costruire? La velocità delle due è la stessa, l'esempio che fai tu avrebbe senso solo se la ferrari la dovesse costruire l'utente finale OGNI VOLTA che gli serve. Poi se consideriamo la quantità di riferimento giusta il tuo ragionamento non fa una piega, mi spiego meglio: la quantità che ti interessa non è il tempo di esecuzione del singolo programma, ma "la somma di tutti i tempi di compilazione e di esecuzione passati, presenti e futuri di un determinato programma". Considerando questa quantità, prendiamo ad esempio un programma che in tutto il suo ciclo di vita verrà utilizzato nel mondo per un totale di 1000000000 di ore (non è tanto se pensi che ci sono programmi che vengono utilizzati a livello mondiale per 1 miliardo di ore ogni giorno, e non per tutto il ciclo di vita del programma): a questo punto avresti questa incredibile differenza prestazionale: - codice binario: 1000000000 di ore - codice assembly: 1000000000 di ore più 1 secondo di compilazione (a stare larghi) Si, considerando questa quantità hai ragione tu, il codice binario è più ""veloce"" dello 0,000000000027% ![]() Ora, consideriamo il caso all'estremo opposto: un programma che si fa un singolo programmatore per sè stesso, e che userà poco. Ipotizziamo che nell'intero ciclo vitale di questo programma, venga utilizzato solo per 1 ora: qui la differenza prestazionale comincia ad essere rilevante: - codice binario: 3600 secondi - codice assembly: 3601 secondi (a stare larghi, ma molto... dubito che un programmino fatto per essere usato un'ora in tutta la sua vita richieda più di qualche millisecondo di compilazione DALL'ASSEMBLY* ) In questo caso, il codice binario è più ""veloce"" dello 0,027% ![]() PS: Il ragionamento che fai tu non è che non abbia MAI senso, può avere senso nel caso di programmi che vengono compilati all'inizio di ogni esecuzione (ad esempio JAVA con compilatore JIT, in cui il bytecode viene compilato prima di ogni esecuzione del programma). Ma non ha senso invece se si parla di un normale programma compilato una sola volta. *PPS: ho pensato solo adesso che giustamente qualcuno mi potrebbe far notare che quello per l'assembly non è nemmeno un compilatore ma un assemblatore, infinitamente più semplice e veloce Ultima modifica di Lonherz : 30-05-2016 alle 17:24. |
![]() |
![]() |
![]() |
#96 |
Senior Member
Iscritto dal: Jan 2004
Messaggi: 2247
|
IMHO:
sono sistemi molto piu' affidabili di quelli attuali |
![]() |
![]() |
![]() |
#97 | |
Senior Member
Iscritto dal: Jan 2004
Messaggi: 2247
|
Quote:
|
|
![]() |
![]() |
![]() |
#98 | |
Senior Member
Iscritto dal: Jan 2004
Messaggi: 2247
|
Quote:
|
|
![]() |
![]() |
![]() |
#99 |
Member
Iscritto dal: Oct 2011
Messaggi: 146
|
Quanto detto Lonherz era grosso modo ciò che volevo dire.
Quello in cui sono stato spesso frainteso essendo pur sempre un ragionamento per lo più teorico che può benissimo distaccarsi dalla pragmantica praticità di tutti i giorni: è che una macchina a volte può essere semplice o semplice abbastanza da non giustificare l'utilizzo di un assemblatore che deve essere implemento ad hoc per quella macchina(e di conseguenza l'assembly)...forse è questo il punto dove non sono riuscito ad essere abbastanza chiaro(anche se ho fatto numerosi esempi in questo senso). Non ho frainteso nulla, so bene di ciò che stiamo parlando altrimenti non mi sarei cimentato nella discussione, ho semplicemente estremizzato i concetti...e questo ha creato un pò di scompiglio...poi spesso sono state lette tra le righe di quello che scrivevo cose che non affermavo...essendo stata un discussione un pò lunga capisco anche che qualche post venisse perso per strada e non tutti avevano giustamente voglia/tempo di leggersi tutta la pappardella... Con questo mi assumo le mie responsabilità, mi scuso e me ne tiro fuori ![]() |
![]() |
![]() |
![]() |
#100 | |||||||||||||||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
E, cosa non meno importante, potevi sfruttare in maniera precisa ogni singola locazione di memoria del sistema. Che poi è esattamente quello che ho fatto nei giochi a cui ho lavorato per Amiga (Fightin' Spirit, pubblicato, e USA Racing, mai pubblicato): senza l'assembly non sarebbero stati possibili, a meno di rinunciare a diverse cose. Quote:
"Le macchine leggono solo il Linguaggio Macchina(binario), che poi "leggono" schede perforate(in binario) o listati(in binario) o cd(in binario) o pendisk(in binario) o nastri(in binario), dipende solo dall'interfaccia di lettura della suddetta macchinaNel momento in cui affermi che la macchina può leggere il linguaggio macchina, è ovvio che si pone il problema di come sarà stato generato. In che modo pensi di generarlo? Quote:
Ovviamente a parità di programma da realizzare. Quote:
Quote:
E, prima ancora, ci si pone il problema di come generare il codice binario. Quote:
Quote:
Esempio pratico: devi realizzare un programmino che dati due numeri interi a 8 bit senza segno ne faccia la somma, trascurando eventuali riporti, e la visualizzi. Per semplicità si potrebbe prendere un PC col DOS in modalità 8086, visto che il problema si risolve con una manciata di istruzioni (e, dunque, in poco tempo), ma sei libero di scegliere la piattaforma che più ti aggrada. Giusto per essere chiari, vorrei sapere in che modo scriveresti questo programma in linguaggio macchina evitando qualunque traduzione, e ovviamente in che modo lo faresti eseguire dalla macchina. Quest'esempio taglierà la testa al toro. Quote:
Poi ho specificato che l'assembly (dunque NON l'assembler) è un linguaggio (che ovviamente è quello che l'assembler riconosce per poi generare il codice oggetto). Quote:
Io non lo sono per le motivazioni che ho già ampiamente riportato. Quote:
Quote:
Quote:
Che la macchina capisca e possa eseguire soltanto certe sfilze di uni e zeri è pacifico. Il punto, però, è che col linguaggio macchina io posso scrivere codice ponendomi al suo stesso livello d'astrazione. Solo che dovrà farglielo avere in qualche modo, e per questo motivo servirà sempre un "passaggio", come dici tu, esattamente come con tutti gli altri linguaggi (leggi: serve sempre un "traduttore" che generi l'apposito codice oggetto). Quote:
Quote:
![]() Quote:
![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|||||||||||||||
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:38.