NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
MSVC内部函数替代实现

MSVC编译器内部函数的替代实现 更多...

函数

constexpr uint8_t _addcarry_u64 (const uint8_t carry_in, const uint64_t a, const uint64_t b, uint64_t *out) noexcept
 带进位的64位无符号加法
constexpr uint8_t _subborrow_u64 (const uint8_t borrow_in, const uint64_t a, const uint64_t b, uint64_t *out) noexcept
 带借位的64位无符号减法
constexpr uint64_t _umul128 (const uint64_t a, const uint64_t b, uint64_t *hi_out) noexcept
 64位无符号乘法
constexpr uint64_t _udiv128 (const uint64_t dividend_hi, const uint64_t dividend_lo, const uint64_t divisor, uint64_t *remainder) noexcept
 128位无符号除法(基于Knuth-D)

详细描述

MSVC编译器内部函数的替代实现

函数说明

◆ _addcarry_u64()

uint8_t _addcarry_u64 ( const uint8_t carry_in,
const uint64_t a,
const uint64_t b,
uint64_t * out )
constexprnoexcept

带进位的64位无符号加法

参数
carry_in进位输入(0或1)
a第一个加数
b第二个加数
out输出结果(低64位)
返回
进位输出(0或1)

计算 a + b + carry_in,结果存入out,返回进位标志。

在文件 msvc_intrinsic.hpp36 行定义.

◆ _subborrow_u64()

uint8_t _subborrow_u64 ( const uint8_t borrow_in,
const uint64_t a,
const uint64_t b,
uint64_t * out )
constexprnoexcept

带借位的64位无符号减法

参数
borrow_in借位输入(0或1)
a被减数
b减数
out输出结果(低64位)
返回
借位输出(0或1)

计算 a - b - borrow_in,结果存入out,返回借位标志。

在文件 msvc_intrinsic.hpp60 行定义.

◆ _udiv128()

uint64_t _udiv128 ( const uint64_t dividend_hi,
const uint64_t dividend_lo,
const uint64_t divisor,
uint64_t * remainder )
constexprnoexcept

128位无符号除法(基于Knuth-D)

参数
dividend_hi被除数高64位
dividend_lo被除数低64位
divisor除数(64位,必须非0)
remainder输出余数(可为空)
返回
商(64位)

在文件 msvc_intrinsic.hpp113 行定义.

引用了 _umul128(), clz64() , 以及 remainder().

◆ _umul128()

uint64_t _umul128 ( const uint64_t a,
const uint64_t b,
uint64_t * hi_out )
constexprnoexcept

64位无符号乘法

参数
a第一个乘数
b第二个乘数
hi_out输出结果的高64位
返回
结果的低64位

计算 a * b 的128位结果,低64位作为返回值,高64位存入hi_out。

在文件 msvc_intrinsic.hpp86 行定义.

被这些函数引用 _udiv128().