| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
subx: add immediate
First example of a more complex opcode that needs to do its own decoding
to decide what instruction to run.
|
| |
|
| |
|
|
|
|
| |
Fix non-standard switch statement.
|
| |
|
| |
|
|
|
|
| |
Start implementing core x86 addressing mode decoding.
|
| |
|
|
|
|
| |
Consistent naming for the common terms 'register' and 'memory'.
|
|
|
|
|
|
| |
No, go back to a vector for `Memory`. We need it to be contiguously laid
out in memory so that we can write words all at once rather than a byte
at a time.
|
|
|
|
| |
Take control of hex byte parsing.
|
| |
|
| |
|
|
|
|
| |
Hacky one-time html rendering for a single layer in subx.
|
|
|
|
|
|
|
|
|
|
| |
Make memory a sparse map rather than contiguous vector.
In the process, a bugfix for `load_program`: support multiple lines of
comments.
Also save a local copy of the x86 cheatsheet I've been using:
https://net.cs.uni-bonn.de/fileadmin/user_upload/plohmann/x86_opcode_structure_and_instruction_overview.pdf
|
|
|
|
| |
Fix CI.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Undo commit 4002 for factorial.mu, because index.html describes it as an
example showing the labels '{' and '}'.
|
|
|
|
|
| |
Allow list `push` operation to save result in a new list rather than
mutate the existing list.
|
| |
|
| |
|
|
|
|
| |
https://www.reddit.com/r/ProgrammingLanguages/comments/727va7/a_comparison_of_lisps/dnh2q6u
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Follow-up to commit 3993: deep-copy needs to also ignore screen and
console objects. Basically channels and any fake objects passed into
tests. (The real ones will be null, which will work fine thanks to the
bugfix of commit 3996.)
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fully isolate routines from their arguments.
I still need exceptions for containers that are *designed* to be
shared between routines. The primary such case is channels; we need some
way to share them between routines, and if we deep-copy them that
defeats their entire purpose.
A milder case is the use of fake file-systems in tests, though that's a
hint that there'll be more of these as the OS gets more fleshed out. The
pattern seems to be that we need to not deep-copy containers that
contain lock fields, and so their operations internally do their own
locking.
We may have to stop hard-coding the list of exceptions and allow people
to define new ones. Perhaps don't deep-copy any container with metadata
of 'shared', and then ensure that get-location is only ever called on
shared containers.
This still isn't absolutely ironclad. People can now store something
into a channel and then pass it into a routine to share arbitrary data.
But perhaps the goal isn't to be ironclad, just to avoid easy mistakes.
I'd still want an automated check for this, though. Some way to
highlight it as an unsafe pattern.
This completes step 1 in the plan of commit 3992 for making
continuations safe.
|
| |
|