Witam.
Mam taki problemik. Mam kod w ASM:
_send_msg:
push ebp
mov ebp, esp
mov ebx, [ebp + 8]
mov ecx, [ebp + 12]
mov eax, 2
int 0x80
leave
retn
i wywołenie tego kodu w C
extern int send_msg(unsigned long handle, msg_t * msg);
msg_t msg; //Taki sobie typ
msg.message_id = VIDEO_PUTCH;
unsigned long h = get_task("IDDLE"); //Nie wazne :P
send_msg(h, &msg); //To
send_msg(h, &msg); //i to
send_msg(h, &msg); //i to to wywolania funkcji w asm
send_msg(h, &msg);
I teraz mam kod podpięty pod przerwanie 0x80, który pokazuje wartości rejestrów:
Po 1 wysolaniu jest tam poprawny adres (0x800034)
Po 2 wartosc 0x30
Po 3 wartosc 0x30
Po 4 wartosc 0x30
Czy ktos wie czemu tak sie dzieje???
Ja juz probowalem ogrolnej ilości sposobów i pomysły mi się zkończyły :/
Pozdro.