Witam.
Mam taki problem i już nie wiem jak go rozwiązać :/
Mam taką funkcję w ASM:

; long send_msg(unsigned long handle, msg_t * msg);
GLOBAL _send_msg
_send_msg:
    push ebp
    mov ebp, esp
    mov ebx, [ebp + 8]
    mov ecx, [ebp + 12]
    mov eax, 1234
    int 0x80
    leave
    ret

I teraz wywołuje ją z C w pętli:

void test_ipc(void)
{
 int i;
 for (i=0;i<10;i++)
 {
  send_msg(i, &msg);
 }
}

I po uruchomieniu tego kodu, program zapętla się a i cały czas jest równe 0 (wiem bo funkcja 1234 w moim osie pokazuje stan rejestrów a w ebx jest i)
Teraz modyfikuję kod do postaci:

void test_ipc(void)
{
 int i;
 for (i=0;i<10;)
 {
  i++;
  send_msg(i, &msg);
 }
}

Uruchamiam i widzę 10 razy wysołane 0x80 a i się zwiększa :/
Czy ktoś może wie czemu tak się dzieje, bo ja już nie mam pomysłu :>
Pozdro.