Newsgroup: it.comp.lang.c++
Titolo: Codice ASM e Windows

Ciao a tutti, vorrei utilizzare all'interno del mio programmino alcune righe
di codice assembler.
Compilo il tutto, ma quando eseguo il pgm windows genera un errore di
protezione.
Cosa vuol dire? non posso farlo?

"PiNkU" <nob...@nowhere.xxx> a écrit dans le message news:
acdjl9$5rh$1...@fe1.cs.interbusiness.it...

Dipende da cosa stai facendo,
se per errore o volutamente stai cercando di accedere a zone di memoria
protette dal sistema, allora il sistema ti blocca.
E' come se io facessi cio'
.....
void func()
{
    int *pInt; // qua pInt vale cio' che vuole ...ad esempio pInt=10
    *pInt = 0; // sto cercando di scrivere 0 all'indirizzo 10: windows si
incacchia....
    // A questo punto il sistema puo' anche fare Bbbbblammm!
}
Per cui non potrei dedurne che sotto Windows non mi e' permesso eseguire un
programma scritto in C/C++.
Maurus


Penso di non essermi fatto capire, non volevo dire che in windows non si
possono eseguire programmi scritti in C++, faccio un esempio:
Se volessi utilizzare l'interrupt 16 per leggere il buffer di tastiera
dovrei fare:
asm {
    mov ah, 0x00
    int 16
    etc ....
}
ebbene, nonostatnte il codice funzioni correttamente in DOS, in windows non
funzica, facendo il debug noto che si incrocchia sulla chiamata
all'interrupt.
Ciao

 all'interrupt.
Windows,soprattutto NT,2000 ed XP sono sistemi estremamente protetti,
non puoi far girare arbitrariamente codice a ring 0 come e quando vuoi ma
devi rispettare alcune semplici regole,per accedere alle periferiche e
quindi
mettiamoci pure la tastiera devi usare i device drivers,altrimenti
il sistema ti dice "Alt....questo non lo puoi fare".
Ergo quello che stai facendo č altamente illegale dal punto di vista del
sistema operativo.
Bye.........


Sigh, era cosě bello con il Dos....
E poi si chiedono come mai la gente passa a Linux.... ^_^
Ciao e grazie

 E poi si chiedono come mai la gente passa a Linux.... ^_^
Non spariamo ca**ate... please!
-- 
Luc.

 E poi si chiedono come mai la gente passa a Linux.... ^_^
Neanche Linux ti permette di far questo. :-)
Maurizio

 E poi si chiedono come mai la gente passa a Linux.... ^_^
Infatti, me lo chiedo anch'io, visto che anche sotto Linux
avresti lo stesso problema.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 avresti lo stesso problema.
ummm, pero' si smanetta meglio l'asm con linx che con windows, basta 
essere root e fai quel che vuoi (o quasi), specie in console


Ciao,
Marco

 essere root e fai quel che vuoi (o quasi), specie in console
Sisi, e poi magari combini disastri...
Comunque non è neanche vero quello che hai detto....
--
Marco Iannaccone
marcoia...@tin.it
ICQ UIN: 18748121     PuffMarcolo
Canta come se nessuno ti stesse ascoltando, balla come se nessuno ti stesse
guardando, vivi come se il paradiso fosse sulla terra.
                (Proverbio cinese)

 Comunque non è neanche vero quello che hai detto....
ah, si?
compila questo su windows
/* args.s 
http://linuxassembly.org/linasm-src.html#args
 */
.text
.globl _start
_start:
        popl    %ecx            // argc
lewp:
        popl    %ecx            // argv
        test    %ecx,%ecx
        jz      exit
        movl    %ecx,%ebx
        xorl    %edx,%edx
strlen:
        movb    (%ebx),%al
        inc     %edx
        inc     %ebx
        test    %al,%al
        jnz     strlen
        movb    $10,-1(%ebx)
//      write(1,argv[i],strlen(argv[i]));
        movl    $SYS_write,%eax
        movl    $STDOUT,%ebx
        int     $0x80
        jmp     lewp
exit:
        movl    $SYS_exit,%eax
        xorl    %ebx,%ebx
        int     $0x80
 
        ret
poi ne parliamo

 ha scritto nel messaggio
news:acig1c$pmqeb$1...@ID-128739.news.dfncis.de...

Beh, allora cos'č un sistema operativo se non un insieme di procedure per
l'accesso alle risorse della macchina?

 l'accesso alle risorse della macchina?
Discorso complicato.
Semplicisticamente possiamo dire che Windows, Linux, MacOS, RSX, MVS e gli
altri "autentici sistemi operativi" sono dei programmi che gestiscono le
risorse del computer e le assegnano ai programmi degli utenti.
MS/DOS, invece, è una libreria con la quale il programma in esecuzione, che
è l'unico programma in esecuzione, accede alle risorse del computer.
Ovviamente, essendo l'unico programma in esecuzione, può fare quello che
vuole.
Cazzi suoi :-)
Tecnicamente dicesi "sistema ad allocazione singola contigua".
Ciao,
Marco