[assembly] Testare programma

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.
Messaggi
23
Reazioni
1
Punteggio
25
Premetto che sto ri-iniziando a programmare in assembly dopo molti anni...
Volevo chiedere se sapevate consigliarmi un emulatore per eseguire programmi scritti con sintassi AT&T.
Mi ricordo che una volta utilizzavo EMU8086, ma adesso non mi va più bene perché adesso dovrei programmare in x86, quindi a 32 bit.


PS: uso windows 7 - 8
 
Io programmo con Mikrobasic, però non so se funge con il linguaggio assembly... :grat:
Credo di si comunque ;)
 
Io programmo con Mikrobasic, però non so se funge con il linguaggio assembly... :grat:
Credo di si comunque ;)

Ho provato al volo, ma non è quello che mi serve... Da quanto ho capito questo Mikrobasic serve per interfacciarsi con dei circuiti eleottronici, ma a me non interessa questo...

PS: EMU8086 aveva un'interfaccia così: e io sto cercando qualcosa di simile: http://img838.imageshack.us/img838/6161/1t7z.png

c'è la finestra con l'output, la finestra che mostra i registri e lo stack e la finestra con il codice.
Era molto comodo anche perché si poteva anche eseguire "istruzione per istruzione" e vedere come cambiavano i valori nei registri e nella memoria.
 
Ah ecco, avevo saltato un rigo quindi non avevo capito a cosa ti servisse.. Credevo che intendessi usarlo per i PIC ;)
 
prova con turbo assembler

Nah... turbo assembler è a 16 bit... io dovrei compilare un codice come questo:
Codice:
 /*     Tradurre in linguaggio assembler la seguente funzione:
     int is_prime(int n)
     dice se un numero e'primo o no
 */


     .file    "es2.s"
     .text
     .globl    is_prime
     .type    is_prime, @function
 is_prime:
    pushl    %ebp /*this starts the prolog */
    movl    %esp, %ebp
    pushl    %ebx /*ebx will be used for n */
    pushl    %edi /* edi will be used for i */
    pushl    %esi /* esi will be used for the flag */    
    
    movl    $1, %esi /* Function Body */
    movl    8(%ebp),%ebx /* n in ebx */
    movl    %ebx, %edi /* edi is an index */
.cont:    decl    %edi
    cmpl    $1, %edi
    jle    .end
    pushl    %ebx
    pushl    %edi
    call     modulus
    addl    $8, %esp
    testl    %eax, %eax
    jnz    .cont
    movl    $0, %esi
.end:    movl    %esi, %eax


    popl    %esi /* Epilog */
    popl    %edi
    popl    %esi


    leave
    ret
 
Ma ti serve un assemblatore o un emulatore?

Se devi programmare a 32 bit su windows, ci sono masm, fasm, yasm, nasm e gas.

Il problema è che la sintassi AT&T la supportano solo yasm e gas ( gas in particolare è di default AT&T ).
 
Con gas è possibile visualizzare l'output? Oppure solo i registri e/o la memoria?

No, gas è un assemblatore, cioè genere un file eseguibile. Puoi usare un debugger per visualizzare il contenuto dei registri. Ma se vuoi qualcosa come emu8086, allora ti serve un emulatore.

Puoi usare qemu o bochs, ma comunque il programma va prima assemblato con gas e poi eseguito nell'emulatore.
 
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top