rrthomas / beetle Goto Github PK
View Code? Open in Web Editor NEWA Forth-oriented VM and debugger
License: GNU General Public License v3.0
A Forth-oriented VM and debugger
License: GNU General Public License v3.0
A nice idea, but really inefficient, and not really in tune with Beetle's mostly brutally-simple design.
A practical reason to remove it is that I'd like Beetle to be as fast as it reasonably can be, for comparison with SMite, and the current implementation of the memory manager slows down all virtual memory access horribly. (Given which it's impressive how much faster than SMite Beetle runs current pForth!)
On uncaught memory exceptions, dump object file that can be loaded into debugger.
"beetle.pdf", section 2.4 "Operation" says that A is set to 0 and then NEXT is executed. The latter is redundant, and could be deleted; if omitted the first call to single_step()
or run()
will execute NEXT anyway, because A is 0.
This simplification would be an observable change of the specification; the first call to single_step()
will now execute "NEXT" where previously it would have executed the first instruction.
If I edit the file mijit-beetle/c-decls.h
then rebuild beetle, the build is incomplete. Please consider adding an extra dependency to the Makefile.
Surprisingly, although it does no optimization, mijit-beetle already makes beetle go faster. Time to run:
$BEETLE pforth make.fs
Beetle 2.1.1 | Beetle 'master' branch | Beetle 'mijit' branch |
---|---|---|
6.84s | 6.68s | 4.71s |
-0% | -2% | -31% |
Add [increment] to [index] ; if [index] thereby crosses the [limit] - 1 to [limit] boundary, [...]
It's not clear what this means unless we know whether to interpret increment
as signed or unsigned. For example, if increment
is 1<<31
, it could be interpreted as positive (unsigned) or negative (signed). Suppose index
and limit
are, say 5
and 0
respectively. If increment
is interpreted as positive, then it does not cross the boundary, but if negative it does.
I think the fix is to specify that increment
is always signed. It is not necessary to specify whether index
and limit
are signed or unsigned; just use cyclic arithmetic.
The name is fixed, and the code is no longer feeding into SMite/Mit.
Would be nice to add explicit license instead of the symlink to ancient automake version. Also it would clarify confusion: is it GPLv3? or v2? or v2+? The automake has upgraded it's license which is a great thing but I'm not sure if it's applicable to this project as well.
Should raise an error.
The Beetle spec currently says "downwards".
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.