注册 登录
编程论坛 汇编论坛

跳转命令和testl命令是如何和标志位配合工作的啊?

wtyj112 发布于 2010-05-04 21:10, 4980 次点击
我老是有点模糊对标志位
 比如说 testl 语句具体是怎么工作?
 在看一些c代码的判断语句的时候 一般条件判断语句 if (count) 的汇编码会写成 testl %ebx, %ebx 。ebx中 放着count
向知道它是怎么工作的?谁能帮我解释下吗?  
3 回复
#2
ONEPROBLEM2010-05-05 08:17
TEST指令只修改标志位,并不返回运算的结果,即参考运算的数值不变。
TESTL %EBX,%EBX中,当EBX为真时,返回真;当EBX为假时,返回假。而EBX还会保持它的原值。
#3
wtyj1122010-05-05 09:09
我在看深入理解计算机系统 randal e.bryant & david o'hallaron著
该书中对test指令有这么一段话。
test指令会根据它们的两个操作数的与(and)来设置零标志和负数标志。
这句话让我纠结 我老想例如testl %edx, %edx 用与操作来看怎么会影响到标志位?
标志位是怎样被影响的?
#4
ONEPROBLEM2010-05-05 16:04
回复 3楼 wtyj112
标志位是怎样被影响的?
;------------------------
你的这个问题太深奥了!至于怎么被影响,看来要了解到CPU内部的各个寄存器之间是怎样协调工作的了.
标志位一般在一个叫做"标志寄存器"中,用来记录CPU的各种运算结果,以备它用.实在是深入CPU后才弄明白的了.
1