QEMU的128位算法集合(基于QEMU2.0.0)

来源:互联网 发布:迅龙数据恢复软件安卓 编辑:程序博客网 时间:2024/06/01 20:52
QEMU的128位算法集合,通常用于QEMU中GPA的地址运算,这里总结如下

/*
 * 128位数据结构,由64bit组成,注意这是有符号数,所以高部分最多用63bit,表示127bit的数字
 */
struct Int128 {
    uint64_t lo;
    int64_t hi;
};

  
函数
意义
Int128 int128_make64(uint64_t a)
 64BIT数字转换为 128bit 的格式放在128bit的低 64 
uint64_t int128_get64(Int128 a)
得到 64bit 的值,也就是取得低 64
Int128 int128_zero(void)
0
Int128 int128_one(void)
1
Int128 int128_and(Int128 a, Int128 b)
a & b
Int128 int128_rshift(Int128 a, int n)
a >> n
Int128 int128_add(Int128 a, Int128 b)
a + b
Int128 int128_neg(Int128 a)
-a
Int128 int128_sub(Int128 a, Int128 b)
a – b
int128_nonneg(Int128 a)
a >= 0
bool  int128_eq(Int128 a, Int128 b)
a == b
bool int128_ne(Int128 a, Int128 b)
a != b
bool int128_ge(Int128 a, Int128 b)
a >= b
bool int128_lt(Int128 a, Int128 b)
 a < b 
 bool int128_le(Int128 a, Int128 b)
a <= b
bool int128_gt(Int128 a, Int128 b)
a > b
 bool int128_nz(Int128 a)
 != 0
 Int128 int128_min(Int128 a, Int128 b)
a <= b ? a : b
Int128 int128_max(Int128 a, Int128 b)
a >= b ? a : b
void int128_addto(Int128 *a, Int128 b)
a = a + b
void int128_subfrom(Int128 *a, Int128 b)
a = a – b
  
  



0 0
原创粉丝点击