您的位置:首页 > 其它

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

2015-09-28 09:56 381 查看
QEMU的128位算法集合,通常用于QEMU中GPA的地址运算,这里总结如下
/*

 * 128位数据结构,由64bit组成,注意这是有符号数,所以高部分最多用63bit,表示127bit的数字

 */
struct Int128 {

    uint64_t lo;

    int64_t hi;

};
  
[align=center]函数[/align][align=center]意义[/align]
[align=justify]Int128 int128_make64(uint64_t a)[/align][align=justify]将 64BIT数字转换为 128bit 的格式, 放在128bit的低 64 为[/align]
[align=justify]uint64_t int128_get64(Int128 a)[/align][align=justify]得到 64bit 的值,也就是取得低 64位[/align]
[align=justify]Int128 int128_zero(void)[/align][align=justify]0[/align]
[align=justify]Int128 int128_one(void)[/align][align=justify]1[/align]
[align=justify]Int128 int128_and(Int128 a, Int128 b)[/align][align=justify]a & b[/align]
[align=justify]Int128 int128_rshift(Int128 a, int n)[/align][align=justify]a >> n[/align]
[align=justify]Int128 int128_add(Int128 a, Int128 b)[/align][align=justify]a + b[/align]
[align=justify]Int128 int128_neg(Int128 a)[/align][align=justify]-a[/align]
[align=justify]Int128 int128_sub(Int128 a, Int128 b)[/align][align=justify]a – b[/align]
[align=justify]int128_nonneg(Int128 a)[/align][align=justify]a >= 0[/align]
[align=justify]bool  int128_eq(Int128 a, Int128 b)[/align][align=justify]a == b[/align]
[align=justify]bool int128_ne(Int128 a, Int128 b)[/align][align=justify]a != b[/align]
[align=justify]bool int128_ge(Int128 a, Int128 b)[/align][align=justify]a >= b[/align]
[align=justify]bool int128_lt(Int128 a, Int128 b)[/align][align=justify] a < b [/align]
[align=justify] bool int128_le(Int128 a, Int128 b)[/align][align=justify]a <= b[/align]
[align=justify]bool int128_gt(Int128 a, Int128 b)[/align][align=justify]a > b[/align]
[align=justify] bool int128_nz(Int128 a)[/align][align=justify]a != 0[/align]
[align=justify] Int128 int128_min(Int128 a, Int128 b)[/align][align=justify]a <= b ? a : b[/align]
[align=justify]Int128 int128_max(Int128 a, Int128 b)[/align][align=justify]a >= b ? a : b[/align]
[align=justify]void int128_addto(Int128 *a, Int128 b)[/align][align=justify]a = a + b[/align]
[align=justify]void int128_subfrom(Int128 *a, Int128 b)[/align][align=justify]a = a – b[/align]
[align=justify]  [/align][align=justify]  [/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: