在 Rust 中正确添加 bool 到 u8

问题描述 投票:0回答:1

我目前正在 Rust 中开发 CPU 模拟器,并希望确保我的代码遵循最佳实践(或尽可能接近最佳实践)。我正在实现 ADDC() 函数,该函数使用进位标志进行添加。

目前我的标志寄存器是连续 4 个布尔值,作为下面找到的结构。

struct FlagsRegister {
    zero: bool,
    subtract: bool,
    half_carry: bool,
    carry: bool,
}

然后根据规范将其转换为 8 位布尔值以及从 8 位布尔值转换为单个 8 位数字。

我当前的 ADDC 代码是:

fn addc(&mut self, value: u8) -> u8 {
        let (new_value, did_overflow) = self.registers.a.overflowing_add(value + self.registers.f.carry);
        self.registers.f.zero = new_value == 0;
        self.registers.f.subtract = false;
        self.registers.f.carry = did_overflow;
        self.registers.f.half_carry = (self.registers.a & 0xF) + (value & 0xF) > 0xF;
        new_value
    }

关键行是第一个带有 let 值的行,其余的只是标志操作。它给出了错误 can't add bool to u8 。 Rust中从布尔值中提取实际数值的正确方法是什么?

会是mem::transmute吗?或者其他什么?

rust cpu
1个回答
0
投票

我其实是一个布偶,只是为了使用

作为u8。

谢谢卡米尔库克

© www.soinside.com 2019 - 2024. All rights reserved.