📄 types.h
字号:
#ifndef TYPES_H#define TYPES_H#include "config.h"typedef unsigned char u8;typedef unsigned short u16;typedef signed short i16;typedef unsigned int u32;/* * You may use the following defines to adjust the type definitions * depending on the architecture: * - Define BIGENDIAN on big-endian systems. Untested, as all target * systems to date are little-endian. * - Define ALIGNMENT_WORKAROUND if your system doesn't support * non-aligned memory access. In this case, we use a slower, but safer, * memory access method. This should be done automatically in config.h * for architectures which need it. */#ifdef BIGENDIANtypedef struct { u32 h; u32 l;} u64;#elsetypedef struct { u32 l; u32 h;} u64;#endif#ifdef ALIGNMENT_WORKAROUNDstatic inline u64 U64(u32 low, u32 high){ u64 self; self.l=low; self.h=high; return self;}#endif#ifdef ALIGNMENT_WORKAROUND# ifdef BIGENDIAN# define WORD(x) (u16)((x)[1]+((x)[0]<<8))# define DWORD(x) (u32)((x)[3]+((x)[2]<<8)+((x)[1]<<16)+((x)[0]<<24))# define QWORD(x) (U64(DWORD(x+4), DWORD(x)))# else /* BIGENDIAN */# define WORD(x) (u16)((x)[0]+((x)[1]<<8))# define DWORD(x) (u32)((x)[0]+((x)[1]<<8)+((x)[2]<<16)+((x)[3]<<24))# define QWORD(x) (U64(DWORD(x), DWORD(x+4)))# endif /* BIGENDIAN */#else /* ALIGNMENT_WORKAROUND */#define WORD(x) (u16)(*(const u16 *)(x))#define DWORD(x) (u32)(*(const u32 *)(x))#define QWORD(x) (*(const u64 *)(x))#endif /* ALIGNMENT_WORKAROUND */#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -