Assembly 如何将寄存器的值分配给CF?

Assembly 如何将寄存器的值分配给CF?,assembly,x86-64,cpu-registers,carryflag,Assembly,X86 64,Cpu Registers,Carryflag,假设我需要保存并恢复CF中的值 我知道一种技巧是使用pushf和popf。但这对我来说太贵了,因为我只需要CF 我正在尝试使用一个寄存器来完成此操作。为了保存,我使用了setc%r12b。但是,我不知道如何检索这个值,也就是说,如何执行类似于mov%r12b CF 非常感谢 正如@Jester所说,你可以做一个shr%r12b,因为 对于每个移位计数,目标的最低有效位 操作数移到CF标志中,最高有效位为 根据指令类型设置或清除 怎么样shr%r12b。谢谢!!这会影响其他寄存器吗?或者只使用CF

假设我需要保存并恢复CF中的值

我知道一种技巧是使用
pushf
popf
。但这对我来说太贵了,因为我只需要CF

我正在尝试使用一个寄存器来完成此操作。为了保存,我使用了
setc%r12b
。但是,我不知道如何检索这个值,也就是说,如何执行类似于
mov%r12b CF


非常感谢

正如@Jester所说,你可以做一个
shr%r12b
,因为

对于每个移位计数,目标的最低有效位 操作数移到CF标志中,最高有效位为 根据指令类型设置或清除


怎么样
shr%r12b
。谢谢!!这会影响其他寄存器吗?或者只使用CF?是的,是的。请参阅指令集参考。为什么不使用lahf和sahf?ypu所说的昂贵是什么意思?
lahf
不一定在64位模式下可用,除非您将其作为扩展(请参见
cpuid
)。