|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 | ||
|
Senior Member
Iscritto dal: Sep 2009
Città: Nel mondo dei sogni
Messaggi: 4131
|
[Assembly] Curiosità linguaggio e assembler
Sono sempre stato curioso di studiare e imparare un pò di assembly. Nella F.A.Q tra le varie cose dice:
Quote:
Infine: Quote:
2)cosa c'entra NASM con la sitassi dell'assembly? Non dovrebbe essere un assemblatore? Da quello che ho incollato sembra che NASM abbia una propria sintassi, ma la sintassi dell'assembly non cambia sempre a seconda dell'architettura su cui deve essere scritto? Sono domande da newbie totale, ma è quello che sono per quanto riguarda assembly e basso livello |
||
|
|
|
|
|
#2 | ||
|
Senior Member
Iscritto dal: Apr 2006
Città: Ilê-de-France
Messaggi: 319
|
Quote:
per esemio: in x86 00F4 potrebbe essere una mov mentre in ARM potrebbe essere qualche altra cosa tipo una add o un jmp (ovviamente ho preso un valore a caso )
__________________
There is no cloud, it's just someone else computer Ultima modifica di <Gabrik> : 22-05-2011 alle 15:58. |
||
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Sep 2009
Città: Nel mondo dei sogni
Messaggi: 4131
|
Quote:
Ora aspetto chiarimenti sulla seconda parte, anch'essa poco chiara a mio parere. |
|
|
|
|
|
|
#4 | ||||||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
Quote:
Quote:
Quote:
Mentre tradizionalmente i programmatori assembly x86 hanno usato la sintassi Intel, che è di gran lunga più semplice da utilizzare per chi, al contrario, scrive il codice manualmente. Inoltre, a parte la sintassi di base, un assemblatore può fornire costrutti sintattici aggiuntivi per rendere più comoda la vita al programmatore assembly (che di per sé soffre già abbastanza lavorando con questo linguaggio, per cui ogni aiuto è bene accetto 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 |
||||||
|
|
|
|
|
#5 | |||
|
Senior Member
Iscritto dal: Sep 2009
Città: Nel mondo dei sogni
Messaggi: 4131
|
Quote:
Quote:
Quote:
|
|||
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
In realtà non c'è uno standard vero e proprio, e in genere è il produttore di CPU che, rilasciando informazioni a riguardo, definisce la sintassi per il proprio processore.
Ma questo non vuol dire che si debba seguire al 100% quella sintassi. Infatti la si può anche estendere, oppure utilizzarne una completamente diversa (vedi quella AT&T, ad esempio).
__________________
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 |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Sep 2009
Città: Nel mondo dei sogni
Messaggi: 4131
|
Quote:
|
|
|
|
|
|
|
#8 | ||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Come si arrivi a ottenere tutto ciò è un altro paio di maniche. Quote:
Inoltre non è richiesto che l'assemblatore giri sullo stesso processore per cui genererà codice oggetto. Infatti esistono i cosiddetti cross-assemblatori, che girano su una piattaforma e compilano per un'altra. Poi ci sono assemblatori che supportano più sintassi assembly per lo stesso processore (ad esempio Intel e AT&T per gli x86) e/o per processori diversi (x86, 68000, ARM, ecc.), e che possono girare su piattaforme diverse. EDIT: l'assemblatore potrebbe anche essere un programma interpretato.
__________________
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 |
||
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Sep 2009
Città: Nel mondo dei sogni
Messaggi: 4131
|
Quote:
Imparerò iniziando a partire da qualche parte, il problema è da dove |
|
|
|
|
|
|
#10 |
|
Moderatore
Iscritto dal: Nov 2006
Messaggi: 21857
|
se vuoi iniziare con l'assembler ti conviene iniziare con processori semplici che hanno poche istruzioni puoi iniziare cercando qualcosa su z80 ( il celebre processore degli zx spectrum o del più volgare gameboy) oppure con i mips (scarica pc spim)
in alternativa puoi passare al lato oscuro dell'hw e comprare una scheda a microcontrollore ( es la classica ed economica arduino) e programmare quella
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX) Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000 |
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Sep 2009
Città: Nel mondo dei sogni
Messaggi: 4131
|
Quote:
|
|
|
|
|
|
|
#12 |
|
Moderatore
Iscritto dal: Nov 2006
Messaggi: 21857
|
di niente, se ti servono consigli chiedi pure anche se ultimamente l'assembly lo uso pochissimo visto che faccio tutto in c/c++ anche sui micro
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX) Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000 |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
|
Io ti consiglio invece di comprare un libro:
"Reti logiche e calcolatori" Di Fabrizio Luccio e Linda Pagli. Ci troverai la risposta a tutte le domande che hai postato qui
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli!
|
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Processori più semplici di un 6502 è difficile trovarne.
__________________
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 |
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Quote:
Ogni famiglia di processori c'ha il suo e ogni processore in una data famiglia ha meno o più istruzioni che svolgono vari tipi di operazioni. L'assembler è semplicemente il programma che trasforma il codice assembly mnemonico in codice binario. Il sistema operativo c'entra per il semplice motivo che gli eseguibili che andrai a creare in assembly dovranno girare, in genere, all'interno del sistema operativo che stai usando. In questo caso dovranno usare l'API dell'OS ( altrimenti non arrivi lontano ) e gli eseguibili dovranno essere nel formato definito dall'OS ( PE per windows, ELF per linux ). Per iniziare, essendo non proprio facilissimo trovare informazioni su processori vecchi, ti conviene partire con gli x86. C'è un libro di James Coffron che ho usato anni fa ed è molto chiaro. La fregatura è che non tratta la programmazione a 32 bit ( quindi la p-mode ecc... ) ma per iniziare è ottimo perchè fa capire bene molti concetti che stanno alla base dell'architettura x86. |
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Non è così. L'assembly può prevedere dei costrutti sintattici aggiuntivi, come già detto, oltre che delle macroistruzioni che possono anche non avere una diretta corrispondenza con un opcode dell'architettura target.
Viceversa, è possibile che alcuni opcode non abbiano il corrispondente mnemonico assembly. Basti pensare proprio all'architettura x86 che hai citato; ad esempio INC EAX può benissimo essere rappresentato con due opcode diversi (e, a voler esser pignoli, quasi tutte le istruzioni possono avere opcode diversi). Anche i 68000 hanno opcode duplicati per lo stesso mnemonico (anche se sono pochi i casi rispetto a x86). Quindi, in generale, il concetto è che l'assembly è un linguaggio di programmazione per una determinata architettura e NON necessariamente si tratta di un "mascheramento" a più alto livello degli opcode del linguaggio macchina.
__________________
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 |
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Quote:
avere le macro in nasm non implica che l'assembly x86 ( cioè l'isa x86 ) ha le macro un assemblatore che implementa cose che vanno oltre le istruzioni del processore sta implementando delle estensioni |
|
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Feb 2009
Messaggi: 700
|
Quote:
Questo perchè quando tu scrivi un programma Assembler stai dando istruzioni direttamente alla CPU e sono istruzioni per quella specifica CPU...se tu scrivi un programma in C lo stai scrivendo in un linguaggio più generale che poi verrà COMPILATO in un'assembler per la specifica architettura che stai usando (ad esempio usando il compilatore C per X86 piuttosto che per SPARC, etcetc) che poi a sua volta verrà assemblato dall'assemblatore che viene sempre usato nella fase finale... Questo molto a grandi linee ma spero che renda l'idea... In assembler c'è una corrispondenza uno ad uno tra le istruzioni che scrivi e le istruzioni della CPU 2) Credo (perchè ho usato poco assembler) che GNU Assembler sia lo strumento che fà la seguente cosa: scrivi un programma in un qualche linguaggio (ad esempio C), il compilatore C che hai installato sulla tua macchina ti traduce il tuo programma in codice Assembler adatto alla tua architettura (X86, Sparc, etcetc), a questo punto GNU Assembler assembla tale codice in un eseguibile Nasm invece dovrebbe essere l'assemblatore che viene generalmente usato quando tu scrivi un tuo programma direttamente in assembler...se sei tu a scrivere il codice assembler (invece di averlo ottenuto da codice scritto in un altro linguaggio), lo dai in pasto a NASM ed ottieni l'eseguibile Ciao Andrea Ultima modifica di e-commerce84 : 23-05-2011 alle 15:02. |
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Sep 2009
Città: Nel mondo dei sogni
Messaggi: 4131
|
Grazie a tutti per i consigli e la disponibilità, appena possibile inizio subito a dare un'occhiata all'argomento(chissà poi da dove mi è venuta sta fantasia dopo essere stato un anno fermo
|
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: May 2008
Messaggi: 533
|
■
Ultima modifica di rеpne scasb : 18-06-2012 alle 17:18. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:36.




















