a scuola abbiamo appunto incominciato a fare le prime cose di assembler... c'è qualche speranza per poterlo usare su linux? grazie
Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature may not be available in some browsers.
section .text
global _start
_start:
mov eax,1
mov ebx,0
int 80h
si Whivel, l'assembler è diciamo molto simile per sintassi, il fatto che si usino le api è relativo al sistema.Whivel ha detto:ma, predator, in assebly, quante chiamate hai fatto alle api di windows? migliaia, ma ora spiegatemi..... se l'assembly è uguale, funzioneràsu linux? LOL
per evitare equivoci dico: l'assembly è uguale, solo che è l'utente che ha fatto fare chiamate che esistono solo su un tipo di s.o.
quindi bisogna anche stare attenti e conoscere il sistema
se sbaglio meglio, perchè significa che c'è qualcuno che può correggermi ^^
emularlo in che senso?BlackCode ha detto:bah se tu vouoi "allenarti" per assembly di win, visto che lo fate scuola tanto vale emularlo..
as -o nome.o nome.s
BlackLight ha detto:Eh eh nei post sopra c'è la mia guida alla sintassi Assembly AT&T per sistemi Unix, cosa si vuole di più dalla vita?
@Whivel: L'Assembly non è affatto uguale per tutti i sistemi operativi. Ovvio, se usi NASM su Windows e su Linux la sintassi rimane sempre la stessa Intel-based, ma le syscall e gli interrupt usati cambiano radicalmente. Ad esempio un codice del genere
Codice:section .text global _start _start: mov eax,1 mov ebx,0 int 80h
su Windows non funzioneràmai, pur essendo sintatticamente corretto su qualsiasi sistema che supporti la sintassi Intel, in quanto fa riferimento ad una syscall (syscall 1 dell'interrupt 80h, a.k.a. sys_exit) tipica del kernel Linux, così come un codice che faràuso dell'interrupt 13h o 21h del DOS su sistemi Unix non funzioneràmai pur essendo sintatticamente corretto su tutti i sistemi.
meno male che lo avevo scritto a scampo di equivoci.Whivel ha detto:per evitare equivoci dico: l'assembly è uguale, solo che è l'utente che ha fatto fare chiamate che esistono solo su un tipo di s.o.
[edit_after_quote]quindi usando syscall, api e interrupt specifici del s.o., ma il modo in cui le chiami è lo stesso[/edit_after_quote]
quindi bisogna anche stare attenti e conoscere il sistema
nodadenino46 ha detto:ma non dovrebbe essere uguale l'assembly di linux e di windows?
.model small
.stack
.data
.code
inizio
MOV ax,0FFFh
MOV ah,4ch
MOV al,5
MOV bl,4
ADD al,bl
int 21h
end inizio
.data
.text
.global _start
_start:
movl $1,%eax
movl $0,%ebx
int $0x80
leave
ret