#ifndef __cplusplus //"inline" ôóíêöèè äëÿ âûçîâà ñèñòåìíûõ ôóíêöèé Kolibri â C - â èìåíè ôóíêöèè êîë-âî ïàðàìåòðîâ //SysCall# (íîìåð_ñèñòåìíîé_ôóíêöèè, ïàðàìåòðû,...) static inline int SysCall1 (int EAX__) __attribute__((always_inline)); static inline int SysCall2 (int EAX__, int EBX__) __attribute__((always_inline)); static inline int SysCall3 (int EAX__, int EBX__, int ECX__) __attribute__((always_inline)); static inline int SysCall4 (int EAX__, int EBX__, int ECX__, int EDX__) __attribute__((always_inline)); static inline int SysCall5 (int EAX__, int EBX__, int ECX__, int EDX__, int ESI__) __attribute__((always_inline)); static inline int SysCall6 (int EAX__, int EBX__, int ECX__, int EDX__, int ESI__, int EDI__) __attribute__((always_inline)); static inline int SysCall1 (int EAX__) { asm volatile(""::"a"(EAX__)); asm volatile("int $0x40"); register int res; asm volatile("":"=a"(res):); return res; } static inline int SysCall2 (int EAX__, int EBX__) { asm volatile(""::"a"(EAX__)); asm volatile(""::"b"(EBX__)); asm volatile("int $0x40"); register int res; asm volatile("":"=a"(res):); return res; } static inline int SysCall3 (int EAX__, int EBX__, int ECX__) { asm volatile(""::"a"(EAX__)); asm volatile(""::"b"(EBX__)); asm volatile(""::"c"(ECX__)); asm volatile("int $0x40"); register int res; asm volatile("":"=a"(res):); return res; } static inline int SysCall4 (int EAX__, int EBX__, int ECX__, int EDX__) { asm volatile(""::"a"(EAX__)); asm volatile(""::"b"(EBX__)); asm volatile(""::"c"(ECX__)); asm volatile(""::"d"(EDX__)); asm volatile("int $0x40"); register int res; asm volatile("":"=a"(res):); return res; } static inline int SysCall5 (int EAX__, int EBX__, int ECX__, int EDX__, int ESI__) { asm volatile(""::"a"(EAX__)); asm volatile(""::"b"(EBX__)); asm volatile(""::"c"(ECX__)); asm volatile(""::"d"(EDX__)); asm volatile(""::"S"(ESI__)); asm volatile("int $0x40"); register int res; asm volatile("":"=a"(res):); return res; } static inline int SysCall6 (int EAX__, int EBX__, int ECX__, int EDX__, int ESI__, int EDI__) { asm volatile(""::"a"(EAX__)); asm volatile(""::"b"(EBX__)); asm volatile(""::"c"(ECX__)); asm volatile(""::"d"(EDX__)); asm volatile(""::"S"(ESI__)); asm volatile(""::"D"(EDI__)); asm volatile("int $0x40"); register int res; asm volatile("":"=a"(res):); return res; } #else //"inline" ôóíêöèè äëÿ âûçîâà ñèñòåìíûõ ôóíêöèé Kolibri â C++ //SysCall(íîìåð_ñèñòåìíîé_ôóíêöèè, ïàðàìåòðû,...) static inline int SysCall (int EAX__) __attribute__((always_inline)); static inline int SysCall (int EAX__, int EBX__) __attribute__((always_inline)); static inline int SysCall (int EAX__, int EBX__, int ECX__) __attribute__((always_inline)); static inline int SysCall (int EAX__, int EBX__, int ECX__, int EDX__) __attribute__((always_inline)); static inline int SysCall (int EAX__, int EBX__, int ECX__, int EDX__, int ESI__) __attribute__((always_inline)); static inline int SysCall (int EAX__, int EBX__, int ECX__, int EDX__, int ESI__, int EDI__) __attribute__((always_inline)); static inline int SysCall (int EAX__) { asm volatile(""::"a"(EAX__)); asm volatile("int $0x40"); register int res; asm volatile("":"=a"(res):); return res; } static inline int SysCall (int EAX__, int EBX__) { asm volatile(""::"a"(EAX__)); asm volatile(""::"b"(EBX__)); asm volatile("int $0x40"); register int res; asm volatile("":"=a"(res):); return res; } static inline int SysCall (int EAX__, int EBX__, int ECX__) { asm volatile(""::"a"(EAX__)); asm volatile(""::"b"(EBX__)); asm volatile(""::"c"(ECX__)); asm volatile("int $0x40"); register int res; asm volatile("":"=a"(res):); return res; } static inline int SysCall (int EAX__, int EBX__, int ECX__, int EDX__) { asm volatile(""::"a"(EAX__)); asm volatile(""::"b"(EBX__)); asm volatile(""::"c"(ECX__)); asm volatile(""::"d"(EDX__)); asm volatile("int $0x40"); register int res; asm volatile("":"=a"(res):); return res; } static inline int SysCall (int EAX__, int EBX__, int ECX__, int EDX__, int ESI__) { asm volatile(""::"a"(EAX__)); asm volatile(""::"b"(EBX__)); asm volatile(""::"c"(ECX__)); asm volatile(""::"d"(EDX__)); asm volatile(""::"S"(ESI__)); asm volatile("int $0x40"); register int res; asm volatile("":"=a"(res):); return res; } static inline int SysCall (int EAX__, int EBX__, int ECX__, int EDX__, int ESI__, int EDI__) { asm volatile(""::"a"(EAX__)); asm volatile(""::"b"(EBX__)); asm volatile(""::"c"(ECX__)); asm volatile(""::"d"(EDX__)); asm volatile(""::"S"(ESI__)); asm volatile(""::"D"(EDI__)); asm volatile("int $0x40"); register int res; asm volatile("":"=a"(res):); return res; } #endif