Assembly 如何将寄存器的值分配给CF?
假设我需要保存并恢复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
pushf
和popf
。但这对我来说太贵了,因为我只需要CF
我正在尝试使用一个寄存器来完成此操作。为了保存,我使用了setc%r12b
。但是,我不知道如何检索这个值,也就是说,如何执行类似于mov%r12b CF
非常感谢 正如@Jester所说,你可以做一个
shr%r12b
,因为
对于每个移位计数,目标的最低有效位
操作数移到CF标志中,最高有效位为
根据指令类型设置或清除
怎么样
shr%r12b
。谢谢!!这会影响其他寄存器吗?或者只使用CF?是的,是的。请参阅指令集参考。为什么不使用lahf和sahf?ypu所说的昂贵是什么意思?lahf
不一定在64位模式下可用,除非您将其作为扩展(请参见cpuid
)。