1 /* 2 Arith 3 Simple arithmetic opcodes 4 JBS 15 June 1994 5 */ 6 7 #ifndef _ARITH_ 8 9 #define _ARITH_ 10 11 #include "types.h" 12 13 #define plus(a,b) store((a)+(b)) 14 #define minus(a,b) store((a)-(b)) 15 #define multiply(a,b) store((signed_word)(a) * (signed_word)(b)) 16 #define divide(a,b) store((signed_word)(a) / (signed_word)(b)) 17 #define mod(a,b) store((signed_word)(a) % (signed_word)(b)) 18 #define or(a,b) store((a)|(b)) 19 #define and(a,b) store((a)&(b)) 20 #define not(a) store(~(a)) 21 22 #define less_than(a,b) ret_value((signed_word) (a) < (signed_word) (b)) 23 #define greater_than(a,b) ret_value((signed_word) (a) > (signed_word) (b)) 24 25 #define cp_zero(a) ret_value((a) == 0) 26 #define bit(a,b) ret_value(((b) & ~(a)) == 0) 27 28 void logical_shift(word, word); 29 void arithmetic_shift(word, word); 30 31 #endif 32