div64.h

来自「linux 内核源代码」· C头文件 代码 · 共 30 行

H
30
字号
#ifndef _M68K_DIV64_H#define _M68K_DIV64_H#include <linux/types.h>/* n = n / base; return rem; */#define do_div(n, base) ({					\	union {							\		unsigned long n32[2];				\		unsigned long long n64;				\	} __n;							\	unsigned long __rem, __upper;				\								\	__n.n64 = (n);						\	if ((__upper = __n.n32[0])) {				\		asm ("divul.l %2,%1:%0"				\			: "=d" (__n.n32[0]), "=d" (__upper)	\			: "d" (base), "0" (__n.n32[0]));	\	}							\	asm ("divu.l %2,%1:%0"					\		: "=d" (__n.n32[1]), "=d" (__rem)		\		: "d" (base), "1" (__upper), "0" (__n.n32[1]));	\	(n) = __n.n64;						\	__rem;							\})extern uint64_t div64_64(uint64_t dividend, uint64_t divisor);#endif /* _M68K_DIV64_H */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?