28 lines
494 B
C
28 lines
494 B
C
#include "factor.h"
|
|
|
|
#define BINARY_OP(x,y) \
|
|
FIXNUM x, y; \
|
|
y = env.dt; \
|
|
type_check(FIXNUM_TYPE,y); \
|
|
x = dpop(); \
|
|
type_check(FIXNUM_TYPE,x);
|
|
|
|
void primitive_fixnump(void)
|
|
{
|
|
check_non_empty(env.dt);
|
|
env.dt = tag_boolean(TAG(env.dt) == FIXNUM_TYPE);
|
|
}
|
|
|
|
void primitive_divide(void)
|
|
{
|
|
BINARY_OP(x,y);
|
|
/* division takes common factor of 8 out. */
|
|
env.dt = tag_fixnum(x / y);
|
|
}
|
|
|
|
void primitive_not(void)
|
|
{
|
|
type_check(FIXNUM_TYPE,env.dt);
|
|
env.dt = RETAG(UNTAG(~env.dt),FIXNUM_TYPE);
|
|
}
|