Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    linguaggio macchiana e linguaggio assembler

    Salve a tutti.
    Permettetemi di dirvi che di programmazione non so assolutamente "niente" (a parte l'html, che non è manco programmazione, ma formattazione).
    Mi sono trovato a parlare con qualcuno più esperto di me e gli ho detto che avrei avuto intenzione di imparare qualche linguaggio di programmazione ed avere le basi per poter imparare tutti gli altri.
    Allora mi ha detto che per avere una conoscenza di base e completa del concetto di programmazione avrei dovuto imparare il linguagigio macchina, quello parlato da tutti i processori.
    Non mi ricordo come ma è venuto a parlarmi di assembaggio e disassemblaggio (in termini di programmazione).
    Mi ha detto che per diventare un vero esperto di programmazione bisognava essere un assembler e un disassembler, spiegandomi che tutti gli altri linguaggi (come c o c++) sono solo traduttori del linguaggio macchina.
    Ascoltando le sue parole, vorrei imparare il linguaggio assembler per assemblare o disassemblare i programmi.
    Ma ecco che mi sorgono delle domande a cui gradirei delle risposte:

    1)ILinguaggio assembler è l'equivalente di linguaggio macchina?
    2)Se lo è, è basato solo su numerazione binaria?
    3)Quali programmi mi devo procurare per cominciare?

    Inoltre:

    Siccome il linguaggio macchina è universale per tutti i pc, i programmi compilati col linguaggio macchina sono di conseguenza compatibili per windows, linux e qualsiasi altra piattaforma (ovviamente tranne powerMAC) ?

    Vorrei tanto avere chiarimenti, ma soprattutto vorrei che mi indicaste una guida per imparare questo linguaggio.
    Se siete così gentili, vi prego di consigliarmi una guida adatta a chi di programmazione non ne sa niente, e di informatica non credo molto.
    Preferirei una guida su supporto cartaceo, ma se c'è anche su web. Googlando non sono riuscito a risolvere i miei dubbi o a trovare parole esaurienti.
    E poi, se linguaggio assembler e linguaggio macchina sono due cose diverse mi conviene prima imparare il linguaggio macchina?
    Vi ringrazio assai,
    in attesa di una risposta, vi saluto calorosamente.

  2. #2
    Il linguaggio macchina (LM) non e' universale. Virtualmente, ogni processore ha un linguaggio macchina differente. La notazione e' numerica: in genere esadecimale, ma puoi usare quella che piu' ti aggrada, la sostanza non cambia.

    (Inoltre, un eseguibile ha un suo formato, cosi' come le immagini e i suoni: il file eseguibile non e' la "copia esatta" di cio' che andra' in memoria. Al contrario, l'eseguibile va in pasto a un programma, detto loader, che vi esegue alcune operazioni per poterlo allocare in una zona libera di memoria. Ovviamente: ogni sistema operativo definisce i suoi formati eseguibili.)

    L'assembler e' una semplice trascrizione del LM in forma mnemonica: in pratica si usano delle parole e delle etichette, anziche numeri.

    I linguaggi di alto livello, e in particolare quelli orientati agli oggetti, aggiungono delle astrazioni che permettono di realizzare diverse sofisticazioni che con il solo assembler non sono possibili. Per quanto, e' sempre possibile scrivere un programma assembler (o LM) che fa la stessa cosa di uno in Java... E infatti prima o poi il programma Java deve diventare linguaggio macchina per poter essere eseguito!!!

    In effetti lo studio dell'architettura di un calcolatore (e quindi del suo assembler) ti da' una notevole familiarita' col modo in cui lavorano queste macchine.
    A mio parere non c'e' bisogno di impantanarsi su architetture moderne, anche perche' ormai neanche la Intel sa piu' quante schifezze ci sono nei suoi chip.
    Oggi come oggi programmare in assembler (sfruttando appieno le potenzialita' offerte dai processori moderni) e' impensabile.

    CPU usate a scopo didattico, storicamente, sono lo Z80 e il Motorola 68000.
    Puoi procurarti i manuali, testi didattici, emulatori per il tuo sistema operativo, cross-compilatori (cioe' un compilatore che ti permette di ottenere un eseguibile del tuo programma per un altro processore) e tutto cio' che sentirai necessario nel percorso.

    Detto cio': i linguaggi moderni (con l'eccezione del C...) e in particolare quelli orientati agli oggetti, sono fatti in modo da poter tranquillamente ignorare tutto cio' che gira "sotto".

    Ciao!
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  3. #3
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    aggiungo che per essere programmatore non c'è affatto bisogno di saper programmare in linguaggio makkina.

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  4. #4
    La programmazione in assembly è certamente molto essenziale e diretta; la differenza con il linguaggio macchina è minima, essendo in sostanza la sua traduzione mnemonica:
    1. il linguaggio assembly è la sequenza delle istruzioni suggerite dal set che ogni costruttore associa al proprio processore (es: MOV AX,BX)
    2. il linguaggio macchina è la sequenza dei bytes corrispondenti alle istruzioni suggerite dal set, cioè l’unico alimento del processore (es: 3DH, 22H, 1AH, …)
    3. a proposito: la parola assembler è riferita allo strumento (= compilatore ) che opera questa trasformazione (da linguaggio assembly a linguaggio macchina ) e spesso è usata in modo improprio per indicare il linguaggio…

    L’assembly è dunque un linguaggio inventato proprio per rendere intuibili e interpretabili le possibili istruzioni consumate dal processore, quando si occupa dell’eseguibile ottenuto dalla compilazione del sorgente ASM.

    Invero la programmazione in assembly risulta frequentemente ostica, rispetto a quella esercitata con altri linguaggi, perché si tratta di un linguaggio intrinsecamente non strutturato; per amore di chiarezza l’unico modo per prendere decisioni , in ambiente ASM, è quello di saltare in punti diversi del codice , esattamente come fa il processore, che si nutre della versione binaria (codice macchina ) del programma assembly.

    Strutture come IF o FOR o REPEAT..UNTIL o WHILE sono implementabili SEMPRE con istruzioni del tipo “CMP ”, cioè affidando le scelte di programma al risultato aritmetico-logico di un confronto., di norma tra registri, o tra numeri e registri, o tra registri e locazioni di memoria.

    Un programma assembly consentirà alternative del tipo: “se il risultato è zero fai una cosa (per esempio, JZ yyy , prosegui con il flusso normale delle istruzioni)… altrimenti fanne un’altra (per esempio salta, JNZ xxx , all’etichetta xxx, per eseguire un altro blocco d’istruzioni)”

    In aggiunta, il concetto di variabile , tipico della programmazione ad alto livello, va inteso come contenuto di una più locazioni di memoria , a seconda della dimensione della variabile stessa, misurata in questo ambiente, ovviamente in bytes.

    L’assembly , dunque, è un linguaggio che ti da il potere assoluto , pur essendo molto essenziale e semplice... ; personalmente ritengo che sia una passione, prima ancora di essere il padre di tutti i linguaggi ; ed è dimostrato che chi lo conosce ha un’arma in più, alla faccia dei benpensanti.

    Se l'obiettivo del programmatore è rivolto più al controllo il computer che alla realizzazione di programmi applicativi, questa è la risposta giusta! [anche con linguaggi come C , C++ (evoluzione dell'ASSEMBLY) è possibile perseguire i medesimi obiettivi].

    Imparare l’ Assembly è facile: sebbene questa scelta deve essere fatta solo se sei orientato a controllare il tuo PC a basso livello, quello che imparerai sarà comunque vendibile anche all’interno dei cosiddetti linguaggi evoluti.

    codice:
                          Giobe®2000 - Tutto sull'Assembly    - Lezioni, programmi, segreti, trucchi

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.