汇编的bt指令
通过学习bt
指令,熟悉gdb
的使用,和汇编指令的分析方法。
bt
指令从你指定的bit位置,把值拷贝到carry flag
。那些flags,和各种跳转的指令有关,所以就实现了「判断-跳转」。跟carry flag有关的指令是各种jump指令:
主要是这几个根据条件跳转的指令,都会根据carry flag的值来判断是否跳转。关于flag寄存器的说明:
撰写测试代码:
上面两行bt
指令,一个会设置carry flag
,一个会清空carry flag
。因为对应的eax
寄存器的值分别是1
和0
。实际编译和运行代码试试看,设置断点并执行:
接下来的两行bt
指令,可以看到carry flag
拷贝了所指定的bit的值:
eflags
寄存器,里面每一个bit保存一个状态,都是有特殊含义的:
因为cflag是eflags积存器的第一位,所以cf的设置或消除就是加减1
。cpu就是拿这些状态做各种各样的条件判断。
- 上一篇 在macos下使用docker-compose
- 下一篇 关于软件版本命名的一些心得