From d5b74a12a3eb2a7489aad1ca05a1c24ddb4c90e4 Mon Sep 17 00:00:00 2001 From: Tobias Girstmair Date: Tue, 13 Nov 2018 19:52:16 +0100 Subject: [PATCH] new version check which registers are first used by MOV, which rely on being cleared --- foo.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/foo.c b/foo.c index d708f3c..88dd778 100644 --- a/foo.c +++ b/foo.c @@ -11,9 +11,9 @@ u8 i0; u8 i1; u8 i2; u8 i3; -u8 t; -u8 x; -u8 _; +u8 t; //implicitly cleared by mov t,n +u8 x; //implicitly cleared by mov x,s +u8 _; //implicitly cleared by mov tmp,* #define Mh x //mod3 vars #define Ml t // -"- //http://homepage.divms.uiowa.edu/~jones/bcd/mod.shtml @@ -66,14 +66,14 @@ void g(void) { ADC X_hi, zero LD t, X */ t = (((i1&0x1f)<<8|i0)*t)>>8; //TODO - RET //TODO: CALL/RET is expensive; store next-instruction-position in Z register and RJMP, then JRMP back (maybe unnecessary, since timer might need stack anyways) + RET //TODO: replace CALL/RET with IJMP? }; int main(void) { - u8 n; - u8 s; - u8 acc; - //TODO: clear all vars/registers + u8 n; //implicitly cleared by mov n,i2 + u8 s; //implicitly cleared by mov s,i3 + u8 acc;//implicitly cleared by mov acc,t + //TODO: clear i0, i1, i2, i3, zero registers for (;;) { MOV (n, i2) LSL (n) -- 2.39.3