| Age | Commit message (Collapse) | Author |
|
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
|
|
and move the docs on the data structure to where that is
Force-Push: yes
Change-Id: I607f2f9ce354026f27a8c6cbba020e29342fe450
|
|
Force-Push: yes
Change-Id: I77f18bba4ec9e6e806d2987cc107723ef91db802
|
|
the structure will eventually be populated from a few places, but for now, the proof-of-concept installs a complex hook that runs only on the call to "allocate" done at the top of "label-loop".
the comment output code works: the metadata entries are output in the appropriate places in the dump! yay
Force-Push: yes
Change-Id: I15f20241e84b535c8407f9a190b22c9cb85227e6
|
|
and remove a stray semicolon (oops)
Force-Push: yes
Change-Id: I1b26410f5f461f9026637b5509de3912defcd784
|
|
Force-Push: yes
Change-Id: I1cde3ac2bfc10ccaa8be260a1a6a88684563ccf6
|
|
it had a baked-in assumption that the word was exactly eight bytes long, expressed in how it added the null terminator for stringcmp's benefit.
Force-Push: yes
Change-Id: I2a4f9967a3f564e16f163a22b70030a4bf938b5e
|
|
now there is no hardcoding of it anywhere
Force-Push: yes
Change-Id: Iaacbfb5fa07ded7e48075ba59f0bfdb9f9252cf4
|
|
since the recommended invocation to build Evocation (hehe) does the heavy lifting in interpreted mode, this required a new helper, allocate-string, which takes a string in the scratch space and properly allocates it so it won't be overwritten by future allocations
Force-Push: yes
Change-Id: Ia73612a65fd7c11af5fe110c573c23c16b777112
|
|
this will not be useful until read-to-buffer also does, but it's a step towards that
Force-Push: yes
Change-Id: Icf03088c9e52e427a5c130949e9ba85655d59044
|
|
no comments yet, of course. also no way to run it on evoke itself yet, due to the buffer thing.
Force-Push: yes
Change-Id: Ia1d7cc06bd3da59a5d272e1c04606c25d46acee5
|
|
this seemed worth checking in
Force-Push: yes
Change-Id: I6bd81497d83883e0961f46b9e77fde97d1cad661
|
|
quite a lot is implemented, but there is quite a lot still to go. at any rate it compiles cleanly and this seemed like a good point to check things in.
Change-Id: I634bb3b2f1b10702cf63cb73c0a995983b5041f2
Force-Push: yes
|
|
yay! that helps a lot
(as tempting as it was to keep doing it mentally forever...)
Force-Push: yes
Change-Id: I7a213bc46913d00f9a9d3f49bcb22bfed248a010
|
|
Force-Push: yes
Change-Id: I7a5f4033bf80dfd3754de564ab49233459a952c5
|
|
Force-Push: yes
Change-Id: I16f8271c2629270f65e58e3a642511745ce136c1
|
|
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: If9584709d96ca98ed6e03d5987549df9eb357c33
|
|
Force-Push: yes
Change-Id: Ib47e3c68e08d286f01dddecfbd565f881b94f01f
|
|
Force-Push: yes
Change-Id: I5c0e7abaebb9388f7900dbae8bde1b1cd528ac32
|
|
(also see the one in input.e)
Force-Push: yes
Change-Id: I80910cfdb5e3de6f8b1db69a9c630a21b2f92f4a
|
|
they were not a very effective optimization in light of the log-load stuff
Force-Push: yes
Change-Id: Ie0b51dddfda2b44c986a078580cc15be88193755
|
|
Force-Push: yes
Change-Id: I5e8d8ae4a6e07c2dfa38abc7b19a962932a210bf
|
|
Force-Push: yes
Change-Id: I11f3eb1079d27a7306d6ed1e8e4b9fd6fb7d3a4a
|
|
Force-Push: yes
Change-Id: Ice00213f2e4b79f9aa44e6ccc5a70d951f7f762d
|
|
it's starting to get concerning how all this stuff needs to go in quine.asm but hopefully the hex transform will fix it
Force-Push: yes
Change-Id: I840e77c96fa0555bc01b9604d09f5ac4903d48bf
|
|
Force-Push: yes
Change-Id: I0940c0c21580e810716a5f61b95fd520c464ab9e
|
|
this makes it unambiguously a noun phrase
Force-Push: yes
Change-Id: Ibc24821d70aaf6bc88ae5bf5e864e5b4db94dae5
|
|
so the TODOs are unneeded
Force-Push: yes
Change-Id: I13d1316d22b52238076d6f17d05062671e4724e4
|
|
Force-Push: yes
Change-Id: I02af0267657cf21fcf4e4d79457645da42f6798d
|
|
that was surprisingly involved, but it feels like the right thing to do
Change-Id: Ia2f38c7278f4237cebd0435d27131fe32dbc3718
Force-Push: yes
|