📄 stdlib.h
字号:
#ifndef _STDLIB_H
#define _STDLIB_H
#include "sys\types.h"
#include "null.h"
#include "string.h"
#define cli() __asm__("cli")
#define sti() __asm__("sti")
#define nop() __asm__("nop")
#ifdef __cplusplus
extern "C" {
#endif
static inline byte inportb(short __p)
{
byte __v;
__asm__ __volatile__("inb %%dx,%%al":"=a" (__v):"d" (__p));
return __v;
}
static inline byte inport(short __p)
{
WORD __v;
__asm__ __volatile__("inw %%dx,%%ax":"=a" (__v):"d" (__p));
return __v;
}
static inline void outportb(short __p,byte __v)
{
__asm__ __volatile__("outb %%al,%%dx"::"a" (__v),"d" (__p));
}
static inline void* memset(void* __b,char __v,int __n)
{
__asm__ __volatile__("cld;rep stosb"::"a" (__v),"D" (__b),"c" (__n));
return __b;
}
static inline void* memset_w(void *__b,ushort __v,int __n)
{
__asm__ __volatile__("cld;rep stosw"::"a" (__v),"D" (__b),"c" (__n));
return __b;
}
static inline void* memmove(void *__d,void *__s,int __n)
{
if(__d == __s || __n <= 0) return NULL;
if(__d<__s) __asm__ __volatile__("cld;rep movsb"::"c" (__n),"S" (__s), "D" (__d));
else __asm__ __volatile__("std;rep movsb"::"c" (__n),"S" ((int)__s+__n-1),"D" ((int)__d+__n-1));
return __d;
}
static inline void* memcpy(void *__d,void *__s,int __n)
{
if(__d == __s || __n <= 0) return NULL;
__asm__ __volatile__("cld;rep movsb"::"c" (__n),"S" (__s),"D" (__d));
return __d;
}
static inline char* itoa(int __v,char *__s,int __r)
{
int i = 0;
if(__v == 0) {__s[0] = '0';__s[1] = '\0';return __s;}
if(__v < 0 ) {__s[i++] = '-';__v = -__v;}
while(__v > 0)
{
__s[i++] = __v % __r;
__v = __v / __r;
}
__s[i] = '\0';
return strrev(__s);
}
static inline uint pow(int __b,int __p)
{
uint __ret = 1;
for(int i=0;i<__p;i++) __ret = __ret * __b;
return __ret;
}
static inline int atoi(char *__s)
{
int __ret = 0,exp = 0;
int len = strlen(__s);
int k = (__s[0] == '-') ? 1 : 0;
for(int i=len-1;i>=k;i--)
{
__ret += (__s[i]- 0x30) * pow(10,exp);
exp++;
}
return (__s[0] == '-') ? -__ret : __ret;
}
static inline int atoin(char *__s,int __n)
{
int __ret = 0,exp = 0;
int len = __n + 1;
int k = (__s[0] == '-') ? 1 : 0;
for(int i=len-1;i>=k;i--)
{
__ret += (__s[i]- 0x30) * pow(10,exp);
exp++;
}
return (__s[0] == '-') ? -__ret : __ret;
}
static inline void insd(short __p,void *__b,int __n)
{
__asm__ __volatile__("cld;rep insl"::"d" (__p),"D" ((uint)__b),"c" (__n));
}
static inline void outsd(short __p,void *__b,int __n)
{
__asm__ __volatile__("cld;rep outsl"::"d" (__p),"S" ((uint)__b),"c" (__n));
}
static inline void insw(short __p,void *__b,int __n)
{
__asm__ __volatile__("cld;rep insw"::"d" (__p),"D" ((uint)__b),"c" (__n));
}
static inline void outsw(short __p,void *__b,int __n)
{
__asm__ __volatile__("cld;rep outsw"::"d" (__p),"S" ((uint)__b),"c" (__n));
}
#ifdef __cplusplus
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -