Che assembly dovrei studiare?

di il
11 risposte

Che assembly dovrei studiare?

Salve a tutti. sarei interessato all'assembly. Mi sorge un dubbio però...in rete spesso leggo di varie tipologie di assembly. Ma queste ultime dipendono dalla cpu che si stà utilizzando?? es in Assembly Intel x86 devo necessariamente avere una cpu intel? scusate la domanda probabilmente stupida, ma è la prima volta che mi approccio all'assembly. FIn'ora mi son sempre concentrato su c/c++.

Ringrazio in anticipo chiunque possa aiutarmi!

11 Risposte

  • Re: Che assembly dovrei studiare?

    Ogni CPU (o famiglia) ha un proprio set di istruzioni utlizzabili. Devi quindi decidere prima con quale CPU vuoi operare e poi studi l'assembly corrispondente.
  • Re: Che assembly dovrei studiare?

    Studiare l'assembly e' utile, ma conoscere MEGLIO il compilatore C/C++ che si sta' utilizzando e' PIU' MEGLIO.

    Qualunque compilatore C/C++ supporta:

    1) le intrinsic functions: istruzioni assembler viste come funzioni C++ e mappate direttamente

    https://software.intel.com/sites/landingpage/IntrinsicsGuide/

    2) la possibilita' di inserire codice assembler DIRETTAMENTE in una funzione C, o definire una funzione C la cui implementazione e' fatta mediante un pezzo di codice assembler.

    http://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.htm

    Questa soluzione e' decisamente piu' utile che non conoscere le infinite complicazioni dell'assembler puro (che non si usera' mai )
  • Re: Che assembly dovrei studiare?

    Yankoo ha scritto:


    Salve a tutti. sarei interessato all'assembly. Mi sorge un dubbio però...in rete spesso leggo di varie tipologie di assembly. Ma queste ultime dipendono dalla cpu che si stà utilizzando?? es in Assembly Intel x86 devo necessariamente avere una cpu intel?
    Su desktop e notebook, il 99% dei cpu sono x86, sopratutto da Intel (80%) e AMD (20%).

    Quindi, se non vuoi specializzarti su smartphones, Raspberry PI ecc, assembly == x86

    Masm è l'Assembler più usato, seguito da Nasm e Fasm. Anche se i tifosi di C/C++ non possono immaginarselo: Ci sono molti programmatori che producono applicazioni solo con assembly, vuol dire: SENZA un compiler. Per esempio, ho un editore con una source di oltre 20,000 righe; l'exe sta a 120kB senza risorse. Perché programmare in assembly? Tipicamente, assembly è 2-3 volte più veloce che C. Tutto qua...
  • Re: Che assembly dovrei studiare?

    @jj2007: la tua affermazione e' vera nello 0.00000000001% dei casi.

    Scrivere un'intera applicazione in assembler, nel 99.999999999% dei casi, e' inutile.
    Quello che si fa e' scrivere specifiche routine, dove serve performance e dove si fa uso di istruzioni non accessibili al compilatore.

    Dovresti anche PROVARE ad analizzare il codice generato dal compilatore: spesso e volentieri e' in grado di sfruttare istruzioni assembler che tu nemmeno immaginavi esistessero. Oppure fare ottimizzazioni che il programmatore medio non saprebbe nemmeno capire.

    Altra scemenza: i programmatori assembler USANO il compilatore (chiamalo anche 'traduttore'), e li hai pure nominati.
    NESSUNO scrive piu' in binario o esadecimale, ma si usano i formati mnemonici.

    TIPICAMENTE un programma in C e' veloce tanto quanto un programma in assembler, ma il tempo per scriverlo e' DECISAMENTE inferiore.

    NEMMENO con le GPU, l'ultima frontiera dell'assembler, si scrive piu' in assembler ma in un C opportunamente modificato.

    La comodita' del C sta' PROPRIO nel fatto che si usa lo STESSO linguaggio di programmazione con diverse CPU, svincolandosi dallo specifico assembler.

    Imparare l'assembler e' utile, ma imparare NUOVI PARADIGMI DI PROGRAMMAZIONE e' piu' utile

    Tutto qua...
  • Re: Che assembly dovrei studiare?

    migliorabile ha scritto:


    @jj2007: la tua affermazione e' vera nello 0.00000000001% dei casi.
    Quale 'affermazione'?
    Scrivere un'intera applicazione in assembler, nel 99.999999999% dei casi, e' inutile.
    Infatti, se non sei bravo in assembly, meglio stare con C++.
    Altra scemenza: i programmatori assembler USANO il compilatore (chiamalo anche 'traduttore'), e li hai pure nominati.
    Si chiamano ASSEMBLER, non 'compilatore'
    TIPICAMENTE un programma in C e' veloce tanto quanto un programma in assembler, ma il tempo per scriverlo e' DECISAMENTE inferiore
    TIPICAMENTE un programma in assembly SCRITTO da un esperto in assembly è un fattore 2...3 più veloce (e te lo scrivo in meno tempo). Ovviamente, se il codice è scritto da uno che conosce assembly solo dai suoi professori, la differenza non è gran che. Ogni tanto metto in int 3 nei miei programmi, per vedere la disassembly. Gcc per esempio vale sempre una bella risata.

    Buon Natale alla NSA
  • Re: Che assembly dovrei studiare?

    @jj2007, se lo dici TU, chi siamo noi per contraddirti

    Giusto come nota: se non sai usare i breakpoint in modo un po' piu' intelligente, e', ovviamente, un TUO limite
    Se hai avuto a che fare SOLO con programmatori C++ scarsi, di nuovo, e' un TUO limite
  • Re: Che assembly dovrei studiare?

    Perché ogni volta che ti mancano gli argomenti tiri fuori gli insulti?
  • Re: Che assembly dovrei studiare?

    @jj2007: non ho insultato, ci mancherebbe altro.

    Gli argomenti li ho anche indicati, ma, come in thread precedenti, tu accetti le osservazioni SOLO se confermano il TUO punto di vista.
    Il problema e' che il TUO punto di vista e' PARZIALE e non valuta TUTTE le possibili alternative o, almeno, non tenta di essere generalizzato.

    Ma questo non e' un mio problema
  • Re: Che assembly dovrei studiare?

    Nel mio caso ho una APU amd E1 vision. Dovrei studiare il x86? e un'ultima domanda, l'assembly adatto alla mia cpu sarà lo stesso che dovrò utilizzare per esempio se decidessi di inserirlo in funzioni c/c++ con gcc o subirebbe modifiche?
  • Re: Che assembly dovrei studiare?

    Sì, la cpu amd E1 vision è x86. Programmabile sia in 32- che in 64-bit - dipende dalle tue esigenze ed intenzioni.
  • Re: Che assembly dovrei studiare?

    Vi ringrazio ragazzi per le delucidazioni!
Devi accedere o registrarti per scrivere nel forum
11 risposte