Obvious bug in /sys/i386/include/bus.h (was: bus_at386.h)
Uwe Doering
gemini at geminix.org
Tue Jun 14 21:32:06 GMT 2005
Norbert Koch wrote:
>>>So
>>>how can I fix this in assembly. I am not an expert with inlined assembly,
>>>so
>>>maybe someone can correct me if I am wrong, but something like this needs
>>>to
>>>be added:
>>>
>>>or %ecx, %ecx
>>>jz 2
>>>
>>>2:
>>
>>This is wrong beacause the result is stored in ecx. Better using
>>JECXZ instruction
>>before the loop.
>
> No, it's a correct method to set/reset the zero flag:
> (X | X) == X just as (X & X) == X
>
> So, he could also write: "and %ecx, %ecx".
> [...]
Also, on pipelined processors like Intel Pentium and better you would
use "test %ecx, %ecx" for this purpose which internally is an "and", but
since it drops the result and just sets the condition register it is
faster than "and" or "or". At least potentially. Depends on the
surrounding code.
Uwe
--
Uwe Doering | EscapeBox - Managed On-Demand UNIX Servers
gemini at geminix.org | http://www.escapebox.net
More information about the freebsd-hackers
mailing list