è assembly?neongen ha scritto:ma va?V ha scritto:Allora, te lo dice uno che lavora nel campo dei microcontrollori![]()
L'assemby non viene praticamente più usato, si programa direttamente in C/C++ su qualsiasi piattaforma.
Almeno che tu non lo faccia per scopi di cultura personale, non serve più imparare l'assembly...
due righe a casaccio dal kernel linux:Codice: Seleziona tutto
__asm__ __volatile__ ( "\n1:\t" "movl (%0), %%eax\n\t" "movl 4(%0), %%edx\n\t" "lock cmpxchg8b (%0)\n\t" "jnz 1b" : /* no outputs */ : "D"(ptr), "b"(low), "c"(high) : "ax","dx","memory");
Programmare in assembly su linux
Moderatore: Staff
Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
- Vito
- Staff

- Messaggi: 4182
- Iscritto il: mar 5 dic 2006, 17:28
- Nome Cognome: Vito
- Desktop: MacOS
- Località: Monaco (DE)
- Contatta:
"Stat rosa pristina nomina, nomina nuda tenemus." [ Umberto Eco - Il nome della rosa]
"Faber est suae quisque fortunae ." [ Appio Claudio Cieco]
"Faber est suae quisque fortunae ." [ Appio Claudio Cieco]
Ehm, non per essere polemico, ma non è NECESSARIO al giorno d'oggi scrivere del codice in assembly, ovviamente alcune parti di codice devono essere scritte in asm in eccezzionali casi(e tu mi parli del kernel).neongen ha scritto:ma va?V ha scritto:Allora, te lo dice uno che lavora nel campo dei microcontrollori![]()
L'assemby non viene praticamente più usato, si programa direttamente in C/C++ su qualsiasi piattaforma.
Almeno che tu non lo faccia per scopi di cultura personale, non serve più imparare l'assembly...
due righe a casaccio dal kernel linux:Codice: Seleziona tutto
__asm__ __volatile__ ( "\n1:\t" "movl (%0), %%eax\n\t" "movl 4(%0), %%edx\n\t" "lock cmpxchg8b (%0)\n\t" "jnz 1b" : /* no outputs */ : "D"(ptr), "b"(low), "c"(high) : "ax","dx","memory");
Ciò non toglie che conoscere l'aasembly ti aiuta a capire meglio la macchina!
@kasher: che sistema vuoi apprendere?
Coraggio non spaventarti per così popo!!!John-Cena ha scritto:è assembly?neongen ha scritto:ma va?V ha scritto:Allora, te lo dice uno che lavora nel campo dei microcontrollori![]()
L'assemby non viene praticamente più usato, si programa direttamente in C/C++ su qualsiasi piattaforma.
Almeno che tu non lo faccia per scopi di cultura personale, non serve più imparare l'assembly...
due righe a casaccio dal kernel linux:Codice: Seleziona tutto
__asm__ __volatile__ ( "\n1:\t" "movl (%0), %%eax\n\t" "movl 4(%0), %%edx\n\t" "lock cmpxchg8b (%0)\n\t" "jnz 1b" : /* no outputs */ : "D"(ptr), "b"(low), "c"(high) : "ax","dx","memory");
- kasher
- Linux 1.x

- Messaggi: 175
- Iscritto il: gio 20 gen 2005, 0:00
- Slackware: 12.2
- Kernel: 2.6.27.7
- Desktop: kde 3.5.10
diciamo che in alcuni casi è meglio utilizzare l' asm perchè hai più padronanza a basso livello, e poi le applicazioni scritte in asm "sono" più veloci, infatti nel kernel acune parti di codice che riguardano l' interfacciamento con i diversi canali di comunicazione son scritti in asm.
@V: PIC16F84A e derivati
@V: PIC16F84A e derivati
Concordo pienamente sul fattore padronanza, un pò meno sul fatto della velocità: i compilatori moderni riescono ad ottimizzare molto il codice...kasher ha scritto:diciamo che in alcuni casi è meglio utilizzare l' asm perchè hai più padronanza a basso livello, e poi le applicazioni scritte in asm "sono" più veloci, infatti nel kernel acune parti di codice che riguardano l' interfacciamento con i diversi canali di comunicazione son scritti in asm.
@V: PIC16F84A e derivati
Per quanto riguarda quel tipo di microcontrollori, ai tempi dell'itis li usavo e utilizzavo il loro ambiente di sviluppo per windows.
Inoltre puoi farti mandare a casa dei campioni gratuitamente!
Qua un pò di materiale!
http://sourceforge.net/search/?type_of_ ... &words=pic
- Vito
- Staff

- Messaggi: 4182
- Iscritto il: mar 5 dic 2006, 17:28
- Nome Cognome: Vito
- Desktop: MacOS
- Località: Monaco (DE)
- Contatta:
V ha scritto:Coraggio non spaventarti per così popo!!!John-Cena ha scritto:è assembly?neongen ha scritto: ma va?
due righe a casaccio dal kernel linux:Codice: Seleziona tutto
__asm__ __volatile__ ( "\n1:\t" "movl (%0), %%eax\n\t" "movl 4(%0), %%edx\n\t" "lock cmpxchg8b (%0)\n\t" "jnz 1b" : /* no outputs */ : "D"(ptr), "b"(low), "c"(high) : "ax","dx","memory");
"Stat rosa pristina nomina, nomina nuda tenemus." [ Umberto Eco - Il nome della rosa]
"Faber est suae quisque fortunae ." [ Appio Claudio Cieco]
"Faber est suae quisque fortunae ." [ Appio Claudio Cieco]
@ _NYTRO_
Assolutamente d'accordo, ma bisogna anche valutare il rapporto (tempo di sviluppo / guadagno di prestazioni), scrivere in assembly è molto più lungo e soggetto ad errori che scrivere codice ad alto livello
(ma questa è un'altra storia)
@ John-Cena
Ti consiglio di non scoraggiarti: una volta imparato un'assembly passare ad uno diverso non è tanto dura, l'importante è acquisire la metalità!
E' poi da grandissime soddisfazioni avere il controllo COMPLETO del sistema
Coraggio! Ce la farai!

Nota: quello non è codice assembly vero e proprio, e codice assembly dentro del codice C
Assolutamente d'accordo, ma bisogna anche valutare il rapporto (tempo di sviluppo / guadagno di prestazioni), scrivere in assembly è molto più lungo e soggetto ad errori che scrivere codice ad alto livello
@ John-Cena
Ti consiglio di non scoraggiarti: una volta imparato un'assembly passare ad uno diverso non è tanto dura, l'importante è acquisire la metalità!
E' poi da grandissime soddisfazioni avere il controllo COMPLETO del sistema
Coraggio! Ce la farai!
Nota: quello non è codice assembly vero e proprio, e codice assembly dentro del codice C
- DaD
- Linux 2.x

- Messaggi: 371
- Iscritto il: mer 7 feb 2007, 18:19
- Nome Cognome: Antonio Barra
- Slackware: 13
- Kernel: 3.0
- Desktop: KDE 4
- Distribuzione: Mac OS X
- Contatta:
Questo è un hello world in assembly.
... bello nè?
Codice: Seleziona tutto
section .text
global _start
_start:
mov edx,len
mov ecx,messaggio
mov ebx,1
mov eax,4
int 0x80
mov ebx,0
mov eax,1
int 0x80
section .data
messaggio db "Hello, world!",0xa
len equ $ - messaggioCodice: Seleziona tutto
section .text // Sezione codice
global _start
_start:
mov edx,len // Carica la lunghezza della stringa
mov ecx,messaggio // Puntatore al messaggio
mov ebx,1 // Configura per stampa su schermo
mov eax,4 //
int 0x80 // Chiama routine di stampa su schermo
mov ebx,0 //
mov eax,1 // ????????????????????????
int 0x80 //
section .data // Sezione dati
messaggio db "Hello, world!",0xa // Definisci messaggio
len equ $ - messaggio // Lnghezza del messaggio (posizione attuale - posizione messaggio"
- Vito
- Staff

- Messaggi: 4182
- Iscritto il: mar 5 dic 2006, 17:28
- Nome Cognome: Vito
- Desktop: MacOS
- Località: Monaco (DE)
- Contatta:
Mi incuriosisce molto come linguaggio per la sua vicinanca al linguaggio macchina...V ha scritto:@ _NYTRO_
Assolutamente d'accordo, ma bisogna anche valutare il rapporto (tempo di sviluppo / guadagno di prestazioni), scrivere in assembly è molto più lungo e soggetto ad errori che scrivere codice ad alto livello(ma questa è un'altra storia)
@ John-Cena
Ti consiglio di non scoraggiarti: una volta imparato un'assembly passare ad uno diverso non è tanto dura, l'importante è acquisire la metalità!
E' poi da grandissime soddisfazioni avere il controllo COMPLETO del sistema
Coraggio! Ce la farai!
Nota: quello non è codice assembly vero e proprio, e codice assembly dentro del codice C
"Stat rosa pristina nomina, nomina nuda tenemus." [ Umberto Eco - Il nome della rosa]
"Faber est suae quisque fortunae ." [ Appio Claudio Cieco]
"Faber est suae quisque fortunae ." [ Appio Claudio Cieco]
- ildiama
- Linux 3.x

- Messaggi: 536
- Iscritto il: mar 27 dic 2005, 16:49
- Slackware: mine
- Kernel: 2.6.alto..
- Desktop: KDE4
- Località: Senigallia
- Contatta:
Faccio una domanda da ignorante in materia, ma che ha provato un pò a districarsi sull'argomento e che almeno (ai tempi di win95/98) sa scrivere un "hello world" e una "moltiplicazione a 32 bit" in asm.
Che io sappia, il codice che avete scritto voi, non è l'assembly che va bene su linux.. ovvero quel codice è quello dei compilatori masm e derivati, che si emulano (emulavano) su macchine win e/o si aggiungeva "inline" a codice C. L'assembly usato su linux (quello di nasm) segue un'altra sintassi, quella ad esempio del codice inline sul kernel e le due sono molto differenti, a cominciare dall'ordine delle variabili..
Che io sappia non ci sono compilatori asm su linux per il codice che avete usato per il simpatico "hello world".
Ma dico giusto??
Che io sappia, il codice che avete scritto voi, non è l'assembly che va bene su linux.. ovvero quel codice è quello dei compilatori masm e derivati, che si emulano (emulavano) su macchine win e/o si aggiungeva "inline" a codice C. L'assembly usato su linux (quello di nasm) segue un'altra sintassi, quella ad esempio del codice inline sul kernel e le due sono molto differenti, a cominciare dall'ordine delle variabili..
Che io sappia non ci sono compilatori asm su linux per il codice che avete usato per il simpatico "hello world".
Ma dico giusto??