簡體   English   中英

什么是 u64.l 和 u64.h?

[英]what is u64.l and u64.h?

在Linux中,dmidecode源碼:

https://github.com/mirror/dmidecode/blob/master/dmidecode.c#L273

我看到這個:

static void dmi_print_memory_size(u64 code, int shift)
{
 ...

split[0] = code.l & 0x3FFUL;
split[1] = (code.l >> 10) & 0x3FFUL;
split[2] = (code.l >> 20) & 0x3FFUL;
split[3] = ((code.h << 2) & 0x3FCUL) | (code.l >> 30);
split[4] = (code.h >> 8) & 0x3FFUL;
split[5] = (code.h >> 18) & 0x3FFUL;
split[6] = code.h >> 28;

'code' 是一個 u64 變量,為什么它有 member.l 和.h? 它們是干什么用的?

u64 類型在types.h中定義:

#ifdef BIGENDIAN
typedef struct {
    u32 h;
    u32 l;
} u64;
#else
typedef struct {
    u32 l;
    u32 h;
} u64;
#endif

所以看起來.l.h成員代表 64 位數字的“低”和“高”32 位。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM