| Age | Commit message (Collapse) | Author |
|
this allows a much cleaner style than the #swap notation, which will likely be removed soon
Force-Push: yes
Change-Id: If9898334356eb7c036f28afd22d435e00a84f6e2
|
|
the checking is only a little way down the file, but there's a new feature needed, so this is being checked in now to protect the work that's already been done
Force-Push: yes
Change-Id: If8c29d4b417288e5cfb2aa08ce6d41adadc64279
|
|
and amd64.e uses it for all the immediates, but not for other kinds of numeric parameter, which looks pretty slick and readable
Force-Push: yes
Change-Id: Ifb630a4dc172d7495b5458316266fe76b75e07af
|
|
these are all fully working and debugged.
they have been used in a principled attempt to get all the parameter orders in amd64.e correct, but that effort needs to be verified carefully, which it hasn't been, yet.
a couple of missing magic comments in elf.e and execution.e were also added.
Force-Push: yes
Change-Id: Id4c48b121a71b4f945ee3718e14a06f07afd7304
|
|
this required adding a new magic-comment command, drop-subitem, because there's a couple cases, in indexed addressing mode helpers, where a hardcoded register value is used as part of preparing an sib word, and that value shouldn't become a subitem for the assembly word that calls the helper.
notably, a lot of the disp8 and indexed assembly words had incorrect parameter counts that needed adjusting
parameter ORDERS still need a close read to make sure they're correct. also, as future work, substring entries should be renamed to subitem entries.
Force-Push: yes
Change-Id: I419243855751416377d0ea0c5062fa1ba9e62a8d
|
|
and use it in a couple places in amd64.e where it's needed
Change-Id: Id73dcd13f08c03aa02ac09e45ab034fcd90f2569
Force-Push: yes
|
|
add a provide-decimal variant of the magic-comment provide command family
note that the fields are all printed in a wrong order, at present
Force-Push: yes
Change-Id: I01f5cbb86f61e78ce652c54fc8b29b88efd1b2b6
|
|
additionally, handle many (not yet all) of the keywords used by amd64 words
this exposed an existing flaw in the metadata entry processing, which is now fixed as well. to wit: it's common for provide-substring entries to come after the comment entries they go with in the entry array, but this is valid because adjust-length commands can edit the length field of the comment entry afterwards, and the comment entry will be moved to after the provide-substring entry based on its final length, but this can't happen if the adjust-length array isn't able to find the comment entry it goes with, which may not be the most recent entry. so, the adjust-length command needs to scan backwards to find the most recent comment entry, not just the most recent entry.
confused? don't worry... this CL includes documentation. wow. that was a lot.
Change-Id: I01c574fca020fd2e3adaf335267264fdbc8b87f1
Force-Push: yes please
|
|
Force-Push: yes
Change-Id: Ibdc4e05f8c63f0b4b6b8e504f89e053e6cd3a912
|
|
yay!
Force-Push: yes
Change-Id: Ib54458c2466362391cc8724ad8af32f03a869e03
|
|
also add logic to output newlines at the start of these comments
Force-Push: yes
Change-Id: I4c3ce99c264e7d02150cdf2b40d486e925b5fb72
|
|
also due to @atax1a@infosec.exchange
Force-Push: yes
Change-Id: I2e7797772c31fb11decf2a9de65c0e802ca5697a
|
|
this worked by coincidence since it's only ever called in one place, to encode :eax, whose encoding happens to be 0. oops.
thanks to @atax1a@infosec.exchange for spotting this
Force-Push: yes
Change-Id: I4cddbcd370a5d0c7db2f8733431bfda388022a22
|
|
Force-Push: yes
Change-Id: Ice00213f2e4b79f9aa44e6ccc5a70d951f7f762d
|
|
so the TODOs are unneeded
Force-Push: yes
Change-Id: I13d1316d22b52238076d6f17d05062671e4724e4
|
|
Force-Push: yes
Change-Id: I02af0267657cf21fcf4e4d79457645da42f6798d
|
|
also added some instructions it needed
Force-Push: yes
Change-Id: Ia35280e2696167eb0662a5c3a9dc47840438da56
|
|
this turns out to be fairly involved. hex bootstrap can't come fast enough ;)
Force-Push: yes
Change-Id: Ide5d2207d745ad07c40d3c9f457cd6b491bfbcf0
|
|
so it's all just high-level flow control now, which makes it load in itself
the output isn't identical on the first self-compilation, but it converges on the second
with this, it is officially self-hosting. WOW.
Force-Push: yes
Change-Id: Ic14de1dae209b200cada269b07c3826c86fa494f
|
|
wow!!!!!! wow
making this work required implementing comma and keyword in the log-load transform
Force-Push: yes
Change-Id: If888d89c23389720840b49b72478e4826a15a269
|
|
also said feature seems to work, which is flatly astonishing
just a little more now...
Force-Push: yes
Change-Id: I1bda7e99e524ac73a761859e86e01251e7d17525
|
|
so okay, now all the machine code stuff is implemented and it builds without crashing
the generated executable still crashes though, but this was enough work that it's getting a celebratory check-in
Force-Push: yes
Change-Id: I201e6912253647da58ef3537c735b478b0dca9fb
|