gpt4 book ai didi

c - 如何在 64 位寄存器字段中设置第 45 位?

转载 作者:太空宇宙 更新时间:2023-11-04 07:35:43 25 4
gpt4 key购买 nike

我试图使用 C 设置寄存器中的第 46 位,其中 64 位宽。我该如何设置这个位?

目前我正在这样做:

uint32_t= address ;
uint64_t data =1ULL << 46;

打印这表明第 14 位正在设置。我什至无法设置第 32 位。如果我设置第 32 位,它会设置第 0 位。33 将设置第 1 位。看起来它在 0- 之后进行循环移位31 再次从 0 开始。

以 64 位宽注册。

知道如何设置这个位吗?

例如:

reg_addr.val = FEATURE_REG;

printf(stdout, "Programming enable at address %x=%llx\n",
reg_addr.val,reg_addr.val);

data.val = (1ULL << 46);

printf("Data value %llx\n",data.val);}

最佳答案

如果您使用类型作为 uint32_t 或 uint64_t 正确打印完成:

printf(stdout, "Programming enable at address %" PRIu32 "=%" PRIu64 "\n",reg_addr.addr, reg_addr.val);

假设 reg_addr.addr 是 uint32_t 类型,reg_addr.val 是 uint64_t 类型。

关于c - 如何在 64 位寄存器字段中设置第 45 位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9207611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com