aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClyne Sullivan <clyne@bitgloo.com>2024-12-30 16:41:32 -0500
committerClyne Sullivan <clyne@bitgloo.com>2024-12-30 16:41:32 -0500
commita3a61f1a0b8bb980c9a6e1e442ea6fb5df2b9a44 (patch)
tree395700e52c7b1876d640bd5260b61d88c5f97640
parent334a2a0727a71aa4c4cf953a4689cd22cf943ff6 (diff)
fix at-words for optimizationHEADmain
-rw-r--r--sforth/forth.hpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/sforth/forth.hpp b/sforth/forth.hpp
index 857e27f..78ced3d 100644
--- a/sforth/forth.hpp
+++ b/sforth/forth.hpp
@@ -292,9 +292,9 @@ constexpr auto initialize()
} else {
lit_impl(x);
} }, word_base::immediate
- , S{"@" }, [](auto) { fthp->push(*std::bit_cast<cell *>(fthp->pop())); }, 0
+ , S{"@" }, [](auto) { fthp->top() = *std::bit_cast<cell *>(fthp->top()); }, 0
, S{"!" }, [](auto) { auto p = fthp->pop(); *std::bit_cast<cell *>(p) = fthp->pop(); }, 0
- , S{"C@" }, [](auto) { fthp->push(*std::bit_cast<char *>(fthp->pop())); }, 0
+ , S{"C@" }, [](auto) { fthp->top() = *std::bit_cast<char *>(fthp->top()); }, 0
, S{"C!" }, [](auto) { auto p = fthp->pop(); *std::bit_cast<char *>(p) = fthp->pop(); }, 0
, S{"=" }, [](auto) { auto v = fthp->pop(); fthp->top() = -(fthp->top() == v); }, 0
, S{"<" }, [](auto) { auto v = fthp->pop(); fthp->top() = -(fthp->top() < v); }, 0