PDA

Visualizza la versione completa : [c] TSR


unit1
28-09-2004, 10:59
come si creano dei programmi TSR in c?

SnakePlissken
28-09-2004, 20:28
Leggi qua:

http://ada2.unipv.it/biblio/trickyc/17c.htm

:ciauz:

unit1
30-09-2004, 12:48
mi fai un esempio che non contiene asm?

il mio compilatore c non è in grado di compilarlo.

SnakePlissken
30-09-2004, 19:28
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

#pragma inline

Byez!

unit1
01-10-2004, 12:09
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!

SnakePlissken
01-10-2004, 19:56
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! :ciauz:

daniele_dll
01-10-2004, 20:46
il mingw supporta tranquillamente l'asm, se non erro usa NASM per compilare l'assembler

unit1
02-10-2004, 10:57
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.

unit1
07-10-2004, 13:20
[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...

Johnny_Depp
07-10-2004, 13:52
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)

#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;
}
cerca su google alcuni esempi sul comando "asm"
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/brennan/brennan_att_inline_djgpp.html

Loading