X-Git-Url: https://git.gir.st/Chiptunes.git/blobdiff_plain/2c94c80144b7b064c4277451ceffad5ee66b9041..86f35aa4801eb97468f7f1a58eeb4fbc1ee80cc7:/foo.c diff --git a/foo.c b/foo.c index 99cd7bf..2baef11 100644 --- a/foo.c +++ b/foo.c @@ -87,7 +87,7 @@ int main(void) { INC (x) #define tmp o MOV (tmp, x) - ROR (tmp) + LSR (tmp) //don't rely on carry empty after mov | ror only after add LSR (tmp) ADD (tmp, x) ROR (tmp) @@ -110,24 +110,23 @@ int main(void) { MOV (x, s) INC (x) #define tmp o - unsigned short sum = 0; //XXX - sum += x; - sum >>= 1; - sum += x; - sum >>= 1; + MOV (tmp, x) + LSR (tmp) + ADD (tmp, x) + ROR (tmp) //nop - sum >>= 1; + LSR (tmp) //nop - sum >>= 1; - sum += x; - sum >>= 1; - sum += x; - sum >>= 1; + LSR (tmp) + ADD (tmp, x) + ROR (tmp) + ADD (tmp, x) + ROR (tmp) //nop - sum >>= 1; + LSR (tmp) //nop - sum >>= 1; - x = sum; + LSR (tmp) + x = tmp; #undef tmp t = ((i3&0x01)<<14 | i2<<6 | i1>>2) % 3; SUB (t, n)