?? crt.c
字號(hào):
// C run-time Library for Applications
#include <sys/sysbase.h>
// Interfaces
long SysInvoke(_u32 uFunc, INVOKESTRUCT *pIS)
{
asm volatile("movl 0(%%esi), %%ebx; movl 4(%%esi), %%ecx; movl 8(%%esi), %%edx\n"
"movl 16(%%esi), %%edi; pushl %%esi; movl 12(%%esi), %%esi\n"
"int $0x80\n"
"pushl %%esi; movl 4(%%esp), %%esi\n"
"movl %%ebx, 0(%%esi); movl %%ecx, 4(%%esi); movl %%edx, 8(%%esi)\n"
"movl %%edi, 16(%%esi); movl %%eax, 20(%%esi)\n"
"movl %%esi, %%eax; popl %%esi; movl %%esi, 12(%%eax); popl %%esi\n"
::"S"(pIS), "a"(uFunc));
return (long)pIS->uResult;
}
// Basic system
void SystemVersion(SYSVERSION *pVersion)
{
INVOKESTRUCT is;
SysInvoke(0, &is);
if(pVersion)
{
pVersion->uVersion = is.uResult;
pVersion->uBuild = is.ebx;
pVersion->uTime1 = is.ecx;
pVersion->uTime2 = is.edx;
}
}
void ExitProcess(_u32 uExitCode)
{
asm("int $0x80"::"a"(1), "d"(uExitCode));
}
// Local Memory Management
void* LocalAlloc(_u32 uSize)
{
void *p;
asm("int $0x80":"=a"(p):"a"(4), "c"(uSize));
return p;
}
void LocalFree(void* ptr)
{
asm("int $80"::"a"(5), "d"(ptr));
}
_u32 LocalSize(void *ptr)
{
_u32 v;
asm("int $80":"=a"(v):"a"(7), "d"(ptr));
return v;
}
// File system
HANDLE CreateFile(const char *pszFileName, _u32 flags)
{
CREATEFILESTRUCT cs;
HANDLE v;
cs.uSize = sizeof(cs);
cs.uFlags = flags;
asm("int $0x80":"=a"(v):"a"(64), "S"(pszFileName), "b"(&cs), "c"(sizeof(cs)));
return v;
}
int ReadFile(HANDLE handle, void *pBuffer, int len)
{
int v;
asm("int $0x80":"=a"(v):"a"(65), "D"(pBuffer), "d"(handle), "c"(len));
return v;
}
int WriteFile(HANDLE handle, const void *pBuffer, int len)
{
int v;
asm("int $0x80":"=a"(v):"a"(66), "S"(pBuffer), "d"(handle), "c"(len));
return v;
}
void CloseFile(HANDLE handle)
{
asm("int $0x80"::"a"(68), "d"(handle));
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -