summary refs log tree commit diff
path: root/quine.asm
AgeCommit message (Collapse)Author
11 daysheap allocation now works! also fix some encoding issuesIrene Knapp
implement indirect adds and subtracts; it turns out they're convenient for heap management the operand order for lea.qreg.qreg.disp32 didn't match what the name suggested, so it's fixed now the semantics of push.dimm are quite surprising, for reasons that are now extensively documented also add notes on helpful ways to use gdb Force-Push: yes Change-Id: I717eb6427520e2c336586d4e8066ef172d97ce55
12 daysbreak up OLD_CODE into separate callsIrene Knapp
the goal is to make the assembly monolith, less of one. no individual piece of this is complicated, it was just tightly coupled... now it is less so. Force-Push: yes Change-Id: I4bf5711ee6eae18e68be9d4e1f5107933c45fbbd
12 daysmemory manipulationIrene Knapp
Force-Push: yes Change-Id: I5587783da20301abf11489caad6990531b13e3f1
13 daysadd stack manip, arithmetic, bitwise stuff, comparisonsIrene Knapp
this is all untested, but I'm highly confident in my reading of the Intel manual at this point Force-Push: yes Change-Id: I3dbd59da02994db58f2a53d1890136d583803bc6
2025-10-23a convenience macro for word headersIrene Knapp
Force-Push: yes Change-Id: Ifda1a168808d541f8899a06d39bb9d13733dbadc
2025-10-23pick a header format, document itIrene Knapp
also all the existing stuff has word headers now. it doesn't need them to run, it just has them anyway. and EXIT was moved after DOCOL because it feels poetic that DOCOL is the first Forth word in the file Force-Push: yes Change-Id: I592445310712bfde42fde8cffd7bc672f16c4e6c
2025-10-20implement Forth EXITIrene Knapp
this is the final word called by interpreted words, to return Force-Push: yes Change-Id: I8301fa31009915e4beb069664c9bd16cdf33d879
2025-10-20woooooo successful debuggingIrene Knapp
it turns out things are real enough now that we can't just scribble wherever :) Change-Id: I26c71beaaefecae018ebb3ced4f1f579879a030a Force-Push: yes
2025-10-19it does threaded execution now!!!!!!!!Irene Knapp
this is the core Forth thing, or a large part of it Force-Push: yes Change-Id: Id15cf5289cb7b41e0ea824ef68791f663c2f90e6
2025-10-19much closer to being able to move to threaded executionIrene Knapp
not quite, but very very near Force-Push: yes Change-Id: I79ae9f2970e4d7263db5c511e3a5398c22c4771c
2025-10-19there was an important bug in mov.qreg.disp8.bimmIrene Knapp
it was using rax as an index register, when it should have been using no index register. this was working by coincidence, because rax was zero, but now it's not. yay fixed! there's also lots of decisions made and documented about the execution model, but they're only part-implemented and I wouldn't be checking them in right now if that were all that's new Force-Push: yes Change-Id: Ie8f64914484cd405272d640feeb1cf586ad915d7
2025-10-19rename a bunch of instructionsIrene Knapp
this is just cleanup. once they're all named in a uniform way, it will make sense to write higher-level wrappers around them... Force-Push: yes Change-Id: Id110111d7cd0bf936de8f101cf6886513e1cca84
2025-10-19add extensive documentation on the execution modelIrene Knapp
implement some of the earliest Forth loading stuff, following Jonesforth closely the Forth memory space isn't totally set up yet - we are going to use the data segment after all, though it won't be heap-ish really. everything up through _start is ready for Forthy-y use though, and it does `cld` besides. Force-Push: yeah Change-Id: Ibd12223f304aff71f4e78744f7a9da09b9072a45
2025-10-18Add documentation! Yay :)Irene Knapp
This also gets rid of the `load_origin` variable, it was redundant with flatassembler's `$$` feature. Force-Push: yes Change-Id: I0abc4cf8da65fcb443220e70b69267919ca43ba7
2025-10-11generalized mov.qreg.qregIrene Knapp
Force-Push: yes Change-Id: I668a2738ac19e98dd30c58964ba4c6706613ea7d
2025-10-11comment the code in preparation for restructuring itIrene Knapp
Force-Push: yes Change-Id: I561d5fbb35db97b9d236a159c6c888b0651248c3
2025-10-11clean up mnemonics a bitIrene Knapp
Force-Push: yes Change-Id: I71ad8876fa9c0bdae9c12f1661b084918a1cb61d
2025-10-11use qwordreg in another placeIrene Knapp
Force-Push: yes Change-Id: I0d328c24639b993f8140b18b7b3d4efa450c33c7
2025-10-10sorta outputs itself, but it reads too much of itself to do that, but very ↵Irene Knapp
good progress Force-Push: yeah Change-Id: I14fdd705643af7ae23ea75c778e9671d3787e0e6
2025-10-05hello works! yayIrene Knapp
Force-Push: yes Change-Id: I6c70991d16bd27da2b75ee0666203f043714a685
2025-10-05yay the earliest examples are in a solid stateIrene Knapp
Force-Push: yes Change-Id: I7111b9a9ed3cb5c5cf162af336b2278cf5850b76