|
|
|
@ -48,27 +48,32 @@ typedef uint32_t u32;
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 条件编译指令,用于定义64位无符号整数类型
|
|
|
|
|
#ifdef __x86_64__
|
|
|
|
|
typedef unsigned long long u64;
|
|
|
|
|
typedef unsigned long long u64; // 在x86_64架构下使用unsigned long long作为u64
|
|
|
|
|
#else
|
|
|
|
|
typedef uint64_t u64;
|
|
|
|
|
typedef uint64_t u64; // 否则使用标准库中的uint64_t作为u64
|
|
|
|
|
#endif /* ^__x86_64__ */
|
|
|
|
|
|
|
|
|
|
typedef int8_t s8;
|
|
|
|
|
typedef int16_t s16;
|
|
|
|
|
typedef int32_t s32;
|
|
|
|
|
typedef int64_t s64;
|
|
|
|
|
// 定义有符号整数类型
|
|
|
|
|
typedef int8_t s8; // 8位有符号整数
|
|
|
|
|
typedef int16_t s16; // 16位有符号整数
|
|
|
|
|
typedef int32_t s32; // 32位有符号整数
|
|
|
|
|
typedef int64_t s64; // 64位有符号整数
|
|
|
|
|
|
|
|
|
|
// 如果没有定义MIN,则定义宏MIN和MAX
|
|
|
|
|
#ifndef MIN
|
|
|
|
|
# define MIN(_a,_b) ((_a) > (_b) ? (_b) : (_a))
|
|
|
|
|
# define MAX(_a,_b) ((_a) > (_b) ? (_a) : (_b))
|
|
|
|
|
# define MIN(_a,_b) ((_a) > (_b) ? (_b) : (_a)) // 取两个值中的最小值
|
|
|
|
|
# define MAX(_a,_b) ((_a) > (_b) ? (_a) : (_b)) // 取两个值中的最大值
|
|
|
|
|
#endif /* !MIN */
|
|
|
|
|
|
|
|
|
|
// 宏定义SWAP16,用于交换16位值的字节序
|
|
|
|
|
#define SWAP16(_x) ({ \
|
|
|
|
|
u16 _ret = (_x); \
|
|
|
|
|
(u16)((_ret << 8) | (_ret >> 8)); \
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
// 宏定义SWAP32,用于交换32位值的字节序
|
|
|
|
|
#define SWAP32(_x) ({ \
|
|
|
|
|
u32 _ret = (_x); \
|
|
|
|
|
(u32)((_ret << 24) | (_ret >> 24) | \
|
|
|
|
@ -76,19 +81,23 @@ typedef int64_t s64;
|
|
|
|
|
((_ret >> 8) & 0x0000FF00)); \
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
// 条件编译指令,用于定义随机数宏
|
|
|
|
|
#ifdef AFL_LLVM_PASS
|
|
|
|
|
# define AFL_R(x) (random() % (x))
|
|
|
|
|
# define AFL_R(x) (random() % (x)) // 在AFL_LLVM_PASS模式下使用
|
|
|
|
|
#else
|
|
|
|
|
# define R(x) (random() % (x))
|
|
|
|
|
# define R(x) (random() % (x)) // 否则使用
|
|
|
|
|
#endif /* ^AFL_LLVM_PASS */
|
|
|
|
|
|
|
|
|
|
// 宏定义STRINGIFY_INTERNAL和STRINGIFY,用于将宏参数转换为字符串
|
|
|
|
|
#define STRINGIFY_INTERNAL(x) #x
|
|
|
|
|
#define STRINGIFY(x) STRINGIFY_INTERNAL(x)
|
|
|
|
|
|
|
|
|
|
// 内存屏障,用于阻止编译器和CPU对指令重排
|
|
|
|
|
#define MEM_BARRIER() \
|
|
|
|
|
__asm__ volatile("" ::: "memory")
|
|
|
|
|
|
|
|
|
|
#define likely(_x) __builtin_expect(!!(_x), 1)
|
|
|
|
|
#define unlikely(_x) __builtin_expect(!!(_x), 0)
|
|
|
|
|
// 宏定义likely和unlikely,用于优化分支预测
|
|
|
|
|
#define likely(_x) __builtin_expect(!!(_x), 1) // 预期_x为真
|
|
|
|
|
#define unlikely(_x) __builtin_expect(!!(_x), 0) // 预期_x为假
|
|
|
|
|
|
|
|
|
|
#endif /* ! _HAVE_TYPES_H */
|
|
|
|
|