On 18 January 2011 05:29, James Paige <[email protected]> wrote:
> On Sun, Jan 16, 2011 at 07:31:35PM +1300, Ralph Versteegen wrote:
>> On 14 January 2011 08:54,  <[email protected]> wrote:
>> > james
>> > 2011-01-13 11:54:39 -0800 (Thu, 13 Jan 2011)
>> > 173
>> > Fix potential bitwise breakage in "hero is walking"
>> > when the hero is walking both horizontally and vertically
>> > at the same time. ("NPC is walking" did not have this problem)
>> > ---
>> > U   wip/yetmore.bas
>>
>> Actually, your new implementation is equivalent to the old one.
>
>
> -   IF (xgo(retvals(0)) OR ygo(retvals(0))) THEN
> +   IF xgo(retvals(0)) = 0 AND ygo(retvals(0)) = 0 THEN
> +    scriptret = 0
> +   ELSE
>     scriptret = 1
> -   ELSE
> -    scriptret = 0
>
> Switching AND for OR and inverting the sense of the THEN/ELSE made no
> difference, but adding the = 0 to both sides was the real fix.

But "(xgo(retvals(0)) OR ygo(retvals(0))) <> 0" is equivalent to
(aside from being faster but less clear) "xgo(retvals(0)) <> 0 OR
ygo(retvals(0)) <> 0"

> I don't know why I didn't use ANDALSO :P

Because ANDALSO compiles to more instructions, of course!

Actually, I just checked the assembly for the ANDALSO version and am
horrified to find that fbc is not only not performing any of the
obvious and easy optimisations which I had thought it would, but it
actually adds an unnecessary layer of indirection with a temporary
variable on the stack! Instead of emitting just 4 instructions for the
test (not counting reading from the arrays: twice test, je) as it
could, it emits... 15 instructions!!

fbc's optimisation certainly is terrible. I found a bug in the how it
does algebraic rearrangement a couple days ago, so if some calculation
is returning the wrong answer, be warned that it could actually be
fbc's fault.

> ---
> James
> _______________________________________________
> Ohrrpgce mailing list
> [email protected]
> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>
_______________________________________________
Ohrrpgce mailing list
[email protected]
http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org

Reply via email to