| Age | Commit message (Collapse) | Author |
|
this matches the behavior the Forth implementation has, and also the behavior of the other flatassembler moves. those versions were written later; it became obvious over the course of development that transparently remapping one variant of an instruction into another was a bad idea and would cause confusion. this change is happening now because, indeed, it caused confusion.
the offending variant was used exactly once, in the pushcontrol macro. it has been changed to the disp8 version, which is already what was being output. we've carefully verified that this produces no unexpected binary changes either to the ELF or to the heap.
it's kinda cool knowing for sure that the debugging process actually catches this sort of weirdness.
Force-Push: yes
Change-Id: I355fc0070bb95beeb94c7d14d46fa2cc50f3a30d
|
|
there's still pending disagreements with words implemented in assembly, which will be dealt with in another CL
"forthcoming" :D
Force-Push: yes
Change-Id: I5420f79365bb1de4ff8e30d79212788251f871cf
|
|
oops. missed this one, since it's never actually called so it showed up differently in the diff.
Force-Push: yes
Change-Id: Ia07b268ab736d06aa7d374654dd97baf14f84e1c
|
|
this is useful for a different type of comparison
Force-Push: yes
Change-Id: I225af22586924a716c0d0802cda5194fd19d7d12
|
|
these separate out the data and heap segments; the one for the data
segment also replaces all the flatassembler names with Forth names.
the output of these scripts looks very clean when passed through diff,
showing only important differences
Force-Push: yes
Change-Id: I868ca9817fa41d2c503a8480ae6ceb44c9e10df7
|
|
there had been trailing spaces in the output; now there aren't.
happily, since this was just rearranging existing code snippets, there was no need to recalculate those fiddly branch offsets.
Force-Push: yes
Change-Id: Ifde20e2f8e405da3d74175fd029d589eb0a1ecc0
|
|
the hard part was figuring out the generic test for docol. it doesn't really test for docol, it tests for self-codewords and treats everything else as if it uses docol... not ideal, but good enough for now
this also involved hardcoding the name "0branch" as an alternative to "zbranch". again, not a long-term strategy, but the long-term strategy is to remove flatassembler entirely, at which point the old names will go away because we'll be using our own lexer.
there were also a couple small code-validity things that either broke the "describe" output, or became evident because of it, which are now fixed as well.
Force-Push: yes
Change-Id: If6641bb27f4fb0308f6fd4a2f4885215187ec8d9
|
|
there were a few places where this was inadvertently happening, mostly due to using the wrong name for things
this should be all of them, based on searching the debug output for references to the wrong memory area
Force-Push: yes
Change-Id: I2023e3986f6ab15ff394cca759af3cb98c8ee923
|
|
also there was some missing string termination in the previous ones
Force-Push: yes
Change-Id: I8aebc8569a99a7534ffa3e457020327c3e124ddd
|
|
Force-Push: yes
Change-Id: I15fcae09a0bd0f722c339ed2df41764c8fd9fa7e
|
|
Force-Push: yes
Change-Id: I7cd521188642c63820f3b71c8bd1faf532b6962d
|
|
Force-Push: yes
Change-Id: I9f39c4ea6b46f349cc79dcd9fbc96ed7d546bc8d
|
|
Force-Push: yes
Change-Id: I8a3362131086291f60f5f68369e819c1c030babb
|
|
Force-Push: yes
Change-Id: Icdb3f7f27c7ce0a615efbbef3317bb44cecb5caa
|
|
and define the ones related to Forth assembly
Force-Push: yes
Change-Id: Iae63e3e4875d6c66222f903f904bd46c00dfd40a
|
|
also, they're topologically sorted now, and the map is up to date
these are Forth words, so their binary forms aren't checked
Force-Push: yes
Change-Id: I4738ae562d0ceb327396298a29598988453a0756
|
|
Force-Push: yes
Change-Id: I10a098e9f6660ebec6a0beea6eda0a318c5e7f53
|
|
also add Forth words for a couple missing assembly instructions
the map is kept carefully up-to-date through this, and the binary output of the new implementations was checked against the binary output of the original implementations using the new dictionary-debugging feature
Force-Push: yes
Change-Id: Icc8666dc0da9697ccab5d235b714efaa9bdba113
|
|
Force-Push: yes
Change-Id: I5afdff11ce6003deaeae5a9a0844596a593bd393
|
|
Change-Id: Ieba5e3fb7eca5be769cbf798eac0b91e31a1fe75
Force-Push: yes
|
|
a lot of small utilities got added or reorganized as part of writing the debug code. the map now reflects the current state both of what's been implemented in flatassembler, and what has a copy-to-heap implementation
Force-Push: yes
Change-Id: I749cd1814e4b9e5360b68a77461849b345b16559
|
|
this had been an outstanding TODO
Force-Push: yes
Change-Id: Ib3e4a654f3a4323175e2bbf37a6403a8b84ffc8d
|
|
Force-Push: yes
Change-Id: I5516f0ba9a5fe954a1651dbf36df468a8d420f52
|
|
if it were Mr. Mxyzptlk, it would now be vanquished
Force-Push: yes
Change-Id: I7af53bc2a2f5ab69850d9b8bee152c27d1878dc4
|
|
Force-Push: yes
Change-Id: Idba4d4bc1f77a6dc34196673d7760461f9f99bb8
|
|
under the new names dothex and dotbase
Change-Id: I783ad04c6eda1d607cef794788f7e09586650984
Force-Push: yes
|
|
Force-Push: yes
Change-Id: Ic084e13b4fe715bc08ac9ceb0e97f75d2fe7fedd
|
|
Force-Push: yes
Change-Id: I3e282f1d850dac1ee31fc8ee55ba6edecdacbfca
|
|
the comparators were all backwards; that's fixed now. it wasn't caught before because eq and ne are commutative, and of the others, only lt had ever been used, and only in one place
Force-Push: yes
Change-Id: I0a44f8abd21dfc8e0327441d8009e5150ea220da
|
|
and a placeholder for integer printing
Force-Push: yes
Change-Id: Ie147f3010820ef740405bba9a932d1ae6067b49a
|
|
this will pave the way for the copy thing
currently it correctly prints out all the actual codeword pointers that are part of the word it's scrutinizing, but it has a placeholder for integers
the hard part of this was figuring out the start and end addresses; the iteration was also kinda fiddly
Change-Id: I2bb8d7c768ffc4d3d1d2afd83d1fd2227d15cbae
Force-Push: yes
|
|
these are fully debugged. they'll be used for the decompile-and-recompile copy logic
Force-Push: yes
Change-Id: I25ba5c5934fc3d181dadcfb4cce09727dbacf70f
|
|
yay
Force-Push: yes
Change-Id: I21d21df017db6df3c1b60288f0b8c7270f01ded8
|
|
yay
the assembly-defining words are still not
Force-Push: yes
Change-Id: I561a9304741f98d8f30209d3ba1c3bec9b84c950
|
|
having chewed on it, we still prefer kebab-case
Force-Push: yes
Change-Id: I6ec87be808a4060599d052e8698d677dba7d0134
|
|
this adds an "execute" word, which makes execution tokens useful for something
it also builds "emitstring" on the heap, at runtime, to test that that
all works properly
Force-Push: yes
Change-Id: Ic59a489c0a035a4174db516aeef77e23c7d8528b
|
|
also, fix strlen to not include the null byte
Force-Push: yes
Change-Id: Ifd95da1fc0cf7006df0a25278e03651d6185f037
|
|
and a lot of other stuff necessary for that, as follows
implement the "adc" and "sbb" instructions in flatassembler (there's no Forth implementation of them yet)
implement "cmps8" in flatassembler; Forth already has a much more thorough suite of string instructions
add Forth jmp_rel_imm8 and flatassembler jmp.rel.bimm unconditional jumps. they're nver used, it just seems like they should exist.
split the disp8 case from the indirect case for the flatassembler implementation of register-to-register mov, to match how the Forth implementation works
fix the name of mov.disp8.qreg.qreg, which had been incorrectly named mov.qreg.disp8.qreg. it's never called anyway.
fix a citation for the MOV instruction; Intel's section numbers are confusing.
Force-Push: yeah
Change-Id: I53761a3487041c142ade1a82a8ab9a3f1129b853
|
|
in both repeatable and non-repeatable forms
no ins or outs though
Force-Push: yes
Change-Id: Ica93a1de8b3b698db4e9b3c3c2f00b9e145a2064
|
|
Force-Push: yes
Change-Id: Idbdfe11a5ba4107c90065f015705708030684439
|
|
Force-Push: yes
Change-Id: I45c0a5e729cae2493e341ad3b6145708826383ab
|
|
Force-Push: yes
Change-Id: I511c869c1f5a3c533213a8d3072dd586f29a5a1c
|
|
Force-Push: yes
Change-Id: I6e34fef69b8d254e215eb377f7a50df57190eed0
|
|
Force-Push: yes
Change-Id: Idf4fe951fa583946f0a51a53f15eff7f1138b7c6
|
|
Force-Push: yes
Change-Id: I56f82c56307a8e0cd20fdac38dd264136478dd60
|
|
some basic mistakes in those
Force-Push: yes
Change-Id: Ife797b31962c26fc8a8ab741f4d97bd3da3c0612
|
|
Force-Push: yes
Change-Id: I67f3a218ea3c0cbb362e2825adf200e7cca05edc
|
|
missed that instruction. oops. well, we have it now.
Force-Push: yes
Change-Id: I22583d6c6bda3cb66ad67a69a644aeb777114085
|
|
also fixed scalefield
the testing bar we're applying for these next changes is that it runs successfully, we aren't actually calling the generated funcions yet. we'll need to invent some methodology for checking they're generated correctly.
Force-Push: yes
Change-Id: I820e5671d74fa3bd4342e5d5b26b867e053ba3ca
|
|
Force-Push: yepppppp
Change-Id: I3afbaf2af5b2d31ba435fdad759117c7fb52c1d8
|