come si creano dei programmi TSR in c?
come si creano dei programmi TSR in c?
Leggi qua:
http://ada2.unipv.it/biblio/trickyc/17c.htm
mi fai un esempio che non contiene asm?
il mio compilatore c non è in grado di compilarlo.
Se vuoi programmare a basso livello è inevitabile l'uso dell'asm. Se non te lo compila, c'è un problema che va risolto.
Che compilatore usi?
Generalmente basta utilizzare la diretttiva
Byez!codice:#pragma inline
Summum crede nefas animam preferre pudori e propter vitam vivendi perdere causas.
(Giovenale)
Normalmete: LCC-Win32 http://www.cs.virginia.edu/~lcc-win32/ visto ch e c'è anche un manuale
me ne hanno consigliato anche un altro: http://www.parinya.ca/
il quale ha un file che su chiama AS.exe ma, non sono riuscito ad farlo funzionare!
Premetto che non ho mai usato né LCC né MinGW Developer Studio.
Comunque il problema potrebbe essere nel fatto che il compilatore C non trova l'assemblatore. Quest'ultimo potrebbe essere il tasm.exe o qualche altro, non so... Ma il problema forse sarà che devi inserire una nuova variabile d'ambiente. (Prova a copiare l'assemblatore nella stessa directory del sorgente che stai compilando: il problema dovrebbe risolversi temporaneamente.)
In ogni caso, proprio perché non ho usato mai quei compilatori, qualcun altro potrebbe aiutarti in modo più mirato di quanto possa fare io.
Byez!
Summum crede nefas animam preferre pudori e propter vitam vivendi perdere causas.
(Giovenale)
il mingw supporta tranquillamente l'asm, se non erro usa NASM per compilare l'assembler
VM su SSD da 5$! https://www.digitalocean.com/?refcode=f6925c7f0ddb
il file si chiama as.exe, ma la mia prova non lo chiama propio! cioè l'errore mi viene dato dal compilatore e non dal assemblatore.
adesso non ho il sorgente con me. ma ve lo porto.
[code]
#include<stdio.h>
#pragma inline
main(){
int i=0;
asm{
mov ax,2;
mov i,ax;
ret;
}
printf("i e'uguale: \"%d\"",i);
}
[code]
Questo è la mia prova, ma mi dice che mov non è un comando C ecc...
dipende totalmente dal compilatore che stai utilizzando (asm AT&T [da sinistra a destra] e asm Intel [da destra a sinistra])
questo semplice esempio, funziona alla perfezione con DevC++ (asm AT&T)
cerca su google alcuni esempi sul comando "asm"codice:#include <stdio.h> #include <stdlib.h> int var; int func() { printf("var:%.2d\n", var); } int main() { __asm("push %ebx"); __asm("mov $0, %ebx"); __asm("loop: mov %ebx, _var"); __asm("call _func"); __asm("add $2, %ebx"); __asm("cmp $10, %ebx"); __asm("ja ext"); __asm("jbe loop"); __asm("ext: pop %ebx"); system("pause"); return 0; }
relativi al tuo compilatore.
http://it.tldp.org/HOWTO/Assembly-HOWTO-3.html
leggi anche qua:
AT&T vs Intel:
http://www.delorie.com/djgpp/doc/bre...ine_djgpp.html
...Terrible warlords, good warlords, and an english song