我中遇到的两种可能性是怎么进位标志可以进行设置:subq和cf如何协同工作?
0x00_00_00_00_00_00_00_00 - 0x80_00_00_00_00_00_00_00
(下划线以示字节)
,如果这样做是通过减法,我们就不得不借从一点我们没有,这应该CF设置为1
不过,我是个ALU不会减,而只是增加了两个互补的印象。 0x80_00_00_00_00_00_00_00的二进制补码是0x80_00_00_00_00_00_00_00。所以, 0x00_00_00_00_00_00_00_00 - 0x80_00_00_00_00_00_00_00不携带任何位了63位,这将设置CF为0
以下哪种情况下是有效的在x86的64位值吗?
是否ALU实际执行减法还是它转换成2的补和转化价值做减法?
感谢
你为什么不尝试它? x86会减去,所以它会将CF设置为1.一些体系结构确实使用CF进行减法运算。 – Jester
我不知道如何测试这个?我怎么去看看结果?我在介绍系统类;一切都在C.我可以查看反汇编,但我不知道如何查看状态寄存器?我可以编程一些东西来尝试推断发生了什么,但我很想知道如何实际查看标志。 –
使用调试器。 '(gdb)p $ eflags'给出'$ 1 = [CF PF SF IF OF]'另外,如果你用C编码,你为什么要关心标志?编译器会照顾他们...... – Jester