2009-04-06 13 views
22

Non ho alcuna conoscenza preliminare della programmazione di assiemi e vorrei imparare come codificare l'assembly x86 su una piattaforma Linux. Tuttavia, sto avendo difficoltà a trovare una buona risorsa per insegnarmi.Qual è il modo migliore per imparare l'assembly x86 su una piattaforma Linux?

Il libro di Art of Assembly sembra buono, ma insegna HLA. Non sono interessato a dover imparare in un modo, quindi a riapprolarlo di nuovo. Sembra anche che le architetture RISC abbiano risorse migliori per l'assemblaggio, ma sfortunatamente non ho un processore RISC con cui imparare. Qualcuno ha qualche suggerimento?

risposta

10

http://asm.sf.net ha materiale su architetture oltre x86.

Se si è interessati alle architetture RISC, è possibile eseguire Linux su Qemu. Qemu emula diverse architetture RISC come PowerPC, ARM e MIPS. Potresti riuscire a trovare un'immagine del disco fisso Qemu pronta per l'uso here.

Un altro modo per sperimentare con le architetture RISC sarebbe utilizzare il simulatore integrato di gdb.

2

Probabilmente niente di meglio di The Art of Assembly Language Programming e le altre risorse di quel sito web.

+2

OK, ma che senso ha imparare HLA se non riesco a usarlo? – user87630

+1

E non puoi usarlo perché? Download gratuito. In ogni caso, il libro passa attraverso il set di istruzioni regolari, incluso il modo in cui si codificano le strutture che le macro HLA forniscono. –

+5

Ho iniziato a leggere questo libro, ma ho trovato difficile andare e ho trovato HLA interferire. È stato come imparare lo spagnolo imparando il portoghese. C'è qualche buon libro da insegnare usando FASM? –

9

Ho trovato Assembly language step-by-step una risorsa molto buona. Ha una sezione nella parte posteriore che mira anche all'assemblaggio di Linux.

+1

+1 e l'autore sta lavorando a una nuova edizione. Recentemente ha scritto: "Ora sono circa i 2/3 del Capitolo 9, di 13, e 113.000 parole in circa 175.000. Dovrà essere fatto entro il 30 giugno". Vedere http://www.contrapositivediary.com/ per aggiornamenti. – dwc

0

Provare http://www.emu8086.com che è un emulatore 8086 ospitato da Windows con un assemblatore e un debugger. Viene fornito con un tutorial.

+3

Ciò significherebbe l'esecuzione di Windows. Questo è un grande sacrificio da chiedere. –

+1

@CharlieMartin "Running windows" "Un grande sacrificio" Mi ha fatto ridere. Lunga vita a Linux e Unix! – NlightNFotis

-3

The Art of Assembly linguaggio di programmazione

+3

Hai letto la domanda? O le risposte? –

0

ho imparato assembler x86 da un libro sul 8086 (che non riesco a ricordare il nome di al momento ... era ovviamente piuttosto vecchio, e viola. Se si Sono davvero interessato a scavare quando arrivo a casa). Questo ti insegnerà solo cose a 16 bit, per le cose più avanzate a 32 bit leggo alcuni tutorial online. Non ho mai fatto 64 bit. Almeno all'inizio, il sistema operativo che hai scelto probabilmente non ha importanza, dal momento che sei troppo a basso livello ... il BIOS è tutto ciò che ti interessa davvero. Se non si ha accesso a un sistema di test, un emulatore è probabilmente una buona scelta, come altri hanno menzionato, ma è anche possibile creare un 8088 o 8086 senza troppi problemi da parti discrete. Puoi trovare tutorial e schemi circuitali online facilmente. Dovrebbe costare meno di $ 50 ed è una grande esperienza di apprendimento - stai essenzialmente costruendo una scheda madre da zero.

Se non si è troppo attaccati all'assemblaggio di x86 e si desidera imparare RISC, si consigliano i microcontroller PIC . Puoi prendere uno starter kit per meno di $ 50 (il PICKit 1, che ho, funziona anche su Linux). Hanno una vasta documentazione e un sacco di tutorial di terze parti rivolti agli hobbisti.

+0

Il kit di partenza sembra interessante. Potrei esaminarlo. Grazie. – user87630

2

Esistono davvero due parti per l'apprendimento della programmazione a livello di assieme: i concetti di base e quindi le architetture specifiche. Se non hai avuto alcuna esposizione alla programmazione asm, ti suggerisco caldamente di ottenere le basi prima con un'architettura semplice e piccola, anche se probabilmente non è direttamente applicabile a qualsiasi hardware reale. Se molte persone puntano a una particolare risorsa come "The Art of ...", date un'occhiata, usatela per imparare cosa sia un'architettura, come usare gli strumenti di base (asm, debugger, disasm, ecc.).

Una volta che questi sono fuori mano, quindi è possibile iniziare a guardare in set di istruzioni più avanzate. L'architettura x86 e il set di istruzioni sono piuttosto complicati e ci sono molti modi oscuri per distorcere il tuo cervello - impara qualcosa di semplice prima di affrontarlo.

0

Anche se molte persone che conosco a scuola odiato questo libro, mi collego comunque:

http://www.amazon.com/Professional-Assembly-Language-Programmer/dp/0764579010

Il motivo principale per cui ho usato questo libro è perché utilizza x86 su Linux con l'assemblatore GNU. L'ultimo punto è servito da quando ho dovuto usare quell'assemblatore nel laboratorio della nostra scuola e, se non lo sapessi, la sintassi è diversa dalla sintassi di Intel.

Inoltre, vorrei solo aggiungere che imparare come i linguaggi di alto livello sono stati compilati in linguaggio assembly mi ha davvero aiutato ad andare avanti.

1

assembly x86 è davvero un linguaggio Intel, meglio appreso con un chip Intel e una piattaforma Windows che fa DOS

Se si dispone di qualcosa come WinXP Ci deve essere utilizzato un interprete di DOS che ha mostrato un utente le basi di ASM e ha permesso ad un utente di annullare un comando e modificare il codice in tempo reale, quindi assemblare il codice in un blocco che potrebbe essere eseguito su l'interprete

'stato chiamato il "Ketman interprete"

e' stato per DOS asm solo ma era piuttosto unico perché ti permette di vedere cosa succede con tutti i registri e d flag e consente a un individuo totalmente privo di clan di ottenere un controllo sulla logica

Problemi correlati