From 7426ce9b04bbdf05b1c5f8ae051c3ba4a301de59 Mon Sep 17 00:00:00 2001 From: Brad Nelson Date: Tue, 19 Apr 2022 21:35:49 -0700 Subject: [PATCH] Added FROT --- common/floats.h | 13 +++++++------ common/forth_namespace_tests.fs | 1 + 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/common/floats.h b/common/floats.h index db2a8ec..410b82c 100644 --- a/common/floats.h +++ b/common/floats.h @@ -20,12 +20,13 @@ X("FP!", FPSTORE, fp = (float *) tos; DROP) \ X("SF@", FAT, *++fp = *(float *) tos; DROP) \ X("SF!", FSTORE, *(float *) tos = *fp--; DROP) \ - X("FDUP", FDUP, fp[1] = *fp; ++fp) \ - X("FNIP", FNIP, fp[-1] = *fp; --fp) \ - X("FDROP", FDROP, --fp) \ - X("FOVER", FOVER, fp[1] = fp[-1]; ++fp) \ - X("FSWAP", FSWAP, float ft = fp[-1]; fp[-1] = *fp; *fp = ft) \ - X("FNEGATE", FNEGATE, *fp = -*fp) \ + Y(FDUP, fp[1] = *fp; ++fp) \ + Y(FNIP, fp[-1] = *fp; --fp) \ + Y(FDROP, --fp) \ + Y(FOVER, fp[1] = fp[-1]; ++fp) \ + Y(FSWAP, float ft = fp[-1]; fp[-1] = *fp; *fp = ft) \ + Y(FROT, float ft = fp[-2]; fp[-2] = fp[-1]; fp[-1] = *fp; *fp = ft) \ + Y(FNEGATE, *fp = -*fp) \ X("F0<", FZLESS, DUP; tos = *fp-- < 0.0f ? -1 : 0) \ X("F0=", FZEQUAL, DUP; tos = *fp-- == 0.0f ? -1 : 0) \ X("F=", FEQUAL, DUP; tos = fp[-1] == fp[0] ? -1 : 0; fp -= 2) \ diff --git a/common/forth_namespace_tests.fs b/common/forth_namespace_tests.fs index 6f1ae7e..4eb9019 100644 --- a/common/forth_namespace_tests.fs +++ b/common/forth_namespace_tests.fs @@ -267,6 +267,7 @@ e: check-float-opcodes out: FDROP out: FOVER out: FSWAP + out: FROT out: FNEGATE out: F0< out: F0=