| Age | Commit message (Collapse) | Author |
|
Force-Push: yes
Change-Id: I695582905dea0c6e34981e803ef515c547eade40
|
|
it was confusing from the start, and we had one too many issues with failing to remember it. finally taken care of :)
Force-Push: yes
Change-Id: I9782621f747e84d50d1794e3f1669cb5afb77038
|
|
the verification included words that aren't used in Evocation itself. it also resulted in fixing several such words that were broken in ways that would have crashed. it was a very thorough verification.
do honor to the effort that was put into it by always verifying that changes to amd64.e don't break it, from now on :)
Force-Push: yes
Change-Id: Ia1904f4b35f90772fd9dce79a0274627c547edbf
|
|
everything has been carefully diffed to ensure there's no regression in the verified parts of the output
Force-Push: yes
Change-Id: I32c887c7ca8c132a49899d9ef327c8ff9fb782fb
|
|
this allows a much cleaner style than the #swap notation, which will likely be removed soon
Force-Push: yes
Change-Id: If9898334356eb7c036f28afd22d435e00a84f6e2
|
|
there's about to be a semantic change, but that will happen in a separate CL
Force-Push: yes
Change-Id: Ib32d542c02a640a964fdeed7bc16248b669d6a91
|
|
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 also a prettier flame drawing
Force-Push: yes
Change-Id: I5896bfdee53c934b4c38861c8a9e9f5a966f7264
|
|
also the -entry-string field is renamed to -entry-content, since it's an integer a lot of the time
much clearer. hopefully. certainly more consistent.
Force-Push: yes
Change-Id: I82315a135422ef2fae5dd3d6e8ea025ccfa97cfd
|
|
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
|
|
Force-Push: yes
Change-Id: Ia929bd55a0cec2781a4166dad4c7797fd2cb1b9d
|
|
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
|
|
the contents of evoke.hex aren't usable quite yet, for reasons now described in the README, but the build itself runs to completion. this is honestly a huge milestone.
Force-Push: yes!!!!!
Change-Id: Ia95d6aba7485062c0e64cdde0575058a2df2a1ef
|
|
it's now able to run all the way to the end of the label transform, inside the hex transform. the output leaves much to be desired, but it runs.
Force-Push: yes
Change-Id: I7cac39df599e8081fac6b050dfeb34e598bb54eb
|
|
oops. that was a good catch, should have been checked more often. hopefully it won't be needed much longer.
Force-Push: yes
Change-Id: I3e2d04118a6f588c410e2439fbbd52aabd173e77
|
|
this replaces the alternates we previously had for those words
Change-Id: Ia8c8ca7203e03f511d68a30811fb8a5d262c6312
Force-Push: yes
|
|
this is towards being able to run the hex transform on Forth compilations, rather than just assembly compilations like it does right now. it's been verified that it doesn't cause any regressions.
the reasoning for why this fix is necessary is complex, but explained fully in comments
I have to admit that I'm not totally clear why the unmodified, untransformed string words don't work for this scenario, but they don't, so...
Force-Push: yes
Change-Id: I93640c7ca965eba5dc28116bda0165ae1c941458
|
|
yes, wow, right? big milestone! doesn't work for evoke itself quite yet, but getting really close
Force-Push: yes
Change-Id: I1e836b85cf185db4aa835d2aa494a67585e60744
|
|
and make the explicit way more versatile (allowing zero length)
this required hooking the lexer at a pretty low level, but it worked out fine
Force-Push: yes
Change-Id: Icdbe233fbf9d4cf07cb8d03975eed3b4f7b620aa
|
|
Force-Push: yes
Change-Id: I2d0ed253fc7b0e38f63cb0e6290ac2b1a64e32e8
|
|
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
|
|
now to build out a variety of kinds...
Force-Push: yes
Change-Id: I331c3275c9705cacd7f634506b93d05085458754
|
|
this will be used to substitute substrings, but that's not wired up yet
Force-Push: yes
Change-Id: I957ac153599b02ca8cdc46c7cb2ec487aa2af31c
|
|
since we do this here, we no longer need to worry about doing it during initial entry creation, so that's good. that had been on the mental "maybe later" checklist for a while.
the various innovations in entry processing now make it possible to pass
through most of the formatting in hex.e, so that's done now (suffix comments that aren't instruction decodings still need to be made to work)
there's also a new entry type which will be part of the comment parameter system. that's not fully working yet, but this was a bunch of really subtle debugging, so it makes a good spot to checkpoint at.
Force-Push: yes
Change-Id: I2aff7276368eaad7e5c280a58834605e294dcd74
|
|
Force-Push: yes
Change-Id: I71930b088c176ade6a0bf7aaecb46bdecb0636ad
|
|
suffix comments can now have a negative length, which makes them cover a span anchored with the current point at its end rather than its start
magic comments can now request the suppression of metadata entries that would otherwise be generated
everything in elf.e has magic comments now
Force-Push: yes
Change-Id: I409982afdd346c2ecf91e4c24f96ca81f887b126
|
|
Force-Push: yes!!!
Change-Id: Ib8306fc0924445bb70538011bdbc4b3fca3a6865
|
|
yay!
Force-Push: yes
Change-Id: Ib54458c2466362391cc8724ad8af32f03a869e03
|
|
this allows the length of a metadata entry to be adjusted after it's created, which simplifies the implementation of instructions that might vary in length
Force-Push: yes
Change-Id: I0889dc8b5a4f19adbb1f8ec0d5733a0310457766
|
|
this may be the most important feature for pretty output
there aren't actually any yet (though this has been tested), because there's another feature needed to make them useful
Change-Id: I4ad26a5815e3ffbc64eddd8c813c6eee6d2e989a
Force-Push: yes
|
|
the output is really starting to look like something!
Force-Push: yes
Change-Id: Ic41c8b1702d884ff89693a86d457af7cc752aa86
|
|
this is necessary because packstring isn't implemented in terms of pack8, unlike packalign
also add a bunch more magic comments to hex.e, which would be in the wrong place without the semantic change
Force-Push: yes
Change-Id: I422b8d00a07568be5113e005fddaeab82f5ca731
|
|
also add logic to output newlines at the start of these comments
Force-Push: yes
Change-Id: I4c3ce99c264e7d02150cdf2b40d486e925b5fb72
|
|
they work! that is, they show up in the output. to prove it, two of them are added to elf.e.
they don't yet deal with substring parameters, and there's some formatting niceties to consider.
Force-Push: yes
Change-Id: I0a0f72e21ca023bf99287880d52b5a8dddbf8e34
|
|
right now all we do is recognize the special comments and save their body text for later handling. in a future CL, hex-tilde-replacement will turn them into output metadata entries.
Change-Id: I53cc9d0cd781c2fc43af180ae98606efc14c3147
Force-Push: yes
|
|
this is probably not going to be used in the end, but we found it necessary to write it out to get in touch with our feelings, which allowed us to decide on the other approach, and it's a small amount of code so it's probably best to leave it in until the transform is done. if we took it out we'd keep being tempted to put it back.
Force-Push: yes
Change-Id: I431d27d4f8b8e5415d84d0a2752a0522639792e9
|
|
this isn't directly useful yet, but it helps build intuitions about what kinds of situations the hex transform needs to be able to annotate
Force-Push: yes
Change-Id: I5607649df2db38eeb17d486d5117b07d0b9d03ef
|
|
seriously there was a lot to write here. so, it's going as its own CL.
Force-Push: yes
Change-Id: I1ff091214012fb7c5f0d046f27f0b9f7b3e11ee3
|
|
the trap doesn't do anything yet, except print some diagnostics, but it installs correctly
Change-Id: I3ab9c2eef93167849821791f08188e57a042891f
Force-Push: yes
|
|
"alignment byte count" was confusing since it could mean either the input value that should be used as the modulus base for the desired byte offset, or the number of bytes actually needed to attain modulus zero under that base. in "packalign" itself, this wasn't too confusing, but the hex transform's trap of packalign needs to work with both values alongside each other, so the name needed to be clearer. it is renamed to "alignment byte width".
of course, Evocation doesn't have parameter names as-such, this is just a comment thing
Force-Push: yes
Change-Id: I1c227200ce0b2f6a852c1dc2f2c73f8cdf474f7a
|
|
hex.e doesn't actually call packalign, so this was tested by temporarily modifying it to do so (not checked in)
Force-Push: yes
Change-Id: Ie266c3bda6e65e055da5d88acfe248d6487ab6cc
|
|
so that each can have its own formatting
Force-Push: yes
Change-Id: I59b2eb556b9c1ab1c71118077073b7a8650ed33b
|
|
Force-Push: yes
Change-Id: Ibdf713ba0e66c7a3b4632dacdfa7f10733112b0a
|
|
Force-Push: yes
Change-Id: I7bda5d1ad0c6b1b44ea283b429b14fd397ef978a
|
|
this is gonna work!!!! we can feel it!!!!
Force-Push: yes!!!!! yes, oh, yes! but in an asexual way
Change-Id: I883ad1fb63aa73b753644c9f91bfa46a3d83d2f3
|
|
Force-Push: yes
Change-Id: I07e8170c88952bd3d490341db777f4e102da4acd
|