PDA

Visualizza la versione completa : [ASSEMBLY] Spazio occupato da programmi Intel e MIPS


ale60
25-07-2011, 14:52
ho studiato un pò il linguaggio intel e mips leggendo poi sul libro di testo ho scoperto che in teoria scrivere un linguaggio in intel occupa meno spazio del linguaggio ad alto livello ma perchè visto che per scrivere in assembler devo usare molte righe di codice in più?

ale60
25-07-2011, 14:55
forse si intende che scegliendo io i registri e come allocare in memoria ecc...posso occupare meno memoria?

deleted_29
25-07-2011, 17:51
Originariamente inviato da ale60
ho studiato un pò il linguaggio intel e mips leggendo poi sul libro di testo ho scoperto che in teoria scrivere un linguaggio in intel occupa meno spazio del linguaggio ad alto livello ma perchè visto che per scrivere in assembler devo usare molte righe di codice in più?
Come "in teoria"? :zizi:

La versione ultrabreve è che QUALSIASI programma ad alto livello, alla fin fine, diventa linguaggio macchina.

E l'assembler è strettamente collegato al linguaggio macchina del processore che si considera.
---
Riguardo alla dimensione del codice un programma assembler, avendo istruzioni di basso livello e che fanno in generalo pochissimo, è composto da migliaia/milioni di righe con facilità.
Considera che una singola riga assembler occupa un numero variabile di byte (per Intel) di [media del pollo] una decina di byte.

Ad una singola riga di un linguaggio di alto livello possono corrispondere poche istruzioni assembler (anche una, due o poco più, come nel caso degli incrementi o shift), fino a centinaia di migliaia (es. allocazione di oggetti)
---
I programmi assembler, in generale, son moooolto più piccoli perchè non si aggiunge la "croppa", ossia porzioni di programma inutili che vengono linkate (es. librerie statiche), e perchè si ha il pieno controllo su ogni singola parte

misterx
26-07-2011, 20:46
anni fa lessi su Amiga Magazine una prova molto tecnica su come far dimagrire un eseguibile e ti posso dire che l'articolo terminava dicendo che i compilatori oramai sono talmente specializzati che solo poche persone sono in grado di scrivere codice più breve ed afficace. Si deve essere bravia manipolare le varie opzioni del proprio compilatore. Ricordo che era partito con un semplice programma stile "Hello World" inizialmente di qualche decina di KB alla fine era diventato di 100/200 Byte

MItaly
26-07-2011, 20:54
Originariamente inviato da misterx
anni fa lessi su Amiga Magazine una prova molto tecnica su come far dimagrire un eseguibile e ti posso dire che l'articolo terminava dicendo che i compilatori oramai sono talmente specializzati che solo poche persone sono in grado di scrivere codice più breve ed afficace.
Magari non più breve, ma spesso più veloce (http://blogs.msdn.com/b/oldnewthing/archive/2004/12/16/317157.aspx). Il problema però è che spesso i compilatori non possono compiere alcune ottimizzazioni perché richiedono delle precondizioni non garantite dal linguaggio (vedi ad esempio il problema dell'aliasing in C e derivati), e verificarle effettivamente spesso è molto complesso per il compilatore, quando invece il programmatore potrebbe sapere che tali precondizioni sono sicuramente verificate.

misterx
26-07-2011, 21:44
Originariamente inviato da MItaly
Magari non più breve, ma spesso più veloce (http://blogs.msdn.com/b/oldnewthing/archive/2004/12/16/317157.aspx). Il problema però è che spesso i compilatori non possono compiere alcune ottimizzazioni perché richiedono delle precondizioni non garantite dal linguaggio (vedi ad esempio il problema dell'aliasing in C e derivati), e verificarle effettivamente spesso è molto complesso per il compilatore, quando invece il programmatore potrebbe sapere che tali precondizioni sono sicuramente verificate.

ti assicuro che diventa più piccolo e di parecchio.
L'articolo si intitolava "cura dimagrante". Cercando con google si trova proprio il numero che ne parla, ma bisogna essere iscritti, è un PDF http://www.google.it/search?hl=it&source=hp&biw=1280&bih=635&q=amiga+magazine+cura+dimagrante&aq=f&aqi=&aql=&oq=

MItaly
26-07-2011, 21:46
Originariamente inviato da misterx
ti assicuro che diventa più piccolo e di parecchio.
L'articolo si intitolava "cura dimagrante". Cercando con google si trova proprio il numero che ne parla, ma bisogna essere iscritti, è un PDF http://www.google.it/search?hl=it&source=hp&biw=1280&bih=635&q=amiga+magazine+cura+dimagrante&aq=f&aqi=&aql=&oq=
Nono mi fido, è capitata una situazione analoga anche a me. Il "magari non più breve" era riferito ad assembly scritto a mano.

deleted_29
27-07-2011, 14:37
Originariamente inviato da misterx
anni fa lessi su Amiga Magazine una prova molto tecnica su come far dimagrire un eseguibile e ti posso dire che l'articolo terminava dicendo che i compilatori oramai sono talmente specializzati che solo poche persone sono in grado di scrivere codice più breve ed afficace. Si deve essere bravia manipolare le varie opzioni del proprio compilatore. Ricordo che era partito con un semplice programma stile "Hello World" inizialmente di qualche decina di KB alla fine era diventato di 100/200 Byte
mah... sarà... io sono stato abituato a scrivere programmi interi nei 1000 byte della memoria video.

personalmente ho scritto videogiochi interi, tutti in assembler, di circa 30Kbyte, tutto compreso

Loading