about summary refs log tree commit diff stats
path: root/subx
Commit message (Collapse)AuthorAgeFilesLines
* support string literals in emit-string-literal-dataKartik Agaram2019-05-202-11/+19
| | | | As expected, almost all tests now passing.
* .Kartik Agaram2019-05-201-0/+1
|
* support string literals in emit-metadataKartik Agaram2019-05-202-10/+31
|
* move local variable up following conventionsKartik Agaram2019-05-192-6/+11
| | | | | More importantly, don't mix reclaiming locals with discarding args after a call.
* convention: source arg in ESIKartik Agaram2019-05-192-8/+15
| | | | I _think_ we'll need to use it below. But may be wrong.
* handle words with just metadataKartik Agaram2019-05-192-3/+66
| | | | | Kind of a pathological case, but makes our loop follow a standard format, and provides some error checking at low cost.
* minor style tweaks for emit-metadataKartik Agaram2019-05-192-40/+27
|
* minor style cleanupKartik Agaram2019-05-181-20/+7
|
* skip-string: fix a bug in computing in->readKartik Agaram2019-05-182-4/+48
| | | | I was missing a test to catch this.
* minor style cleanupKartik Agaram2019-05-182-34/+17
| | | | | | | | | | | | I like to be able to jump between functions and tests using '}' in Vim :) We also shouldn't put the wrong argument types in the tabular columns. Just make it obvious they're not in use when instructions don't have a ModR/M byte. End-of-line comments are really only useful for instructions with a ModR/M byte.
* add a bounds checkKartik Agaram2019-05-182-1/+38
|
* implement skip-string-in-slice and reimplement skip-string in terms of ↵nc2019-05-181-37/+75
| | | | skip-string-in-slice
* implemented skip-stringnc2019-05-181-0/+51
|
* another failing testKartik Agaram2019-05-172-0/+90
| | | | This one should make `emit-metadata` string-aware.
* dquotes: failing tests for parsing string literalsKartik Agaram2019-05-162-0/+284
| | | | Plan: https://github.com/akkartik/mu/commit/d4a244268841e8e912c98f4587095b701aa5c292#commitcomment-33558279
* 5180Kartik Agaram2019-05-1611-44/+25
| | | | | | | Clean up some old TODOs related to our pre-mmap limitations. Also caught another case of using the wrong comparison. When comparing addresses, one must always use unsigned rather than signed jump instructions.
* 5179Kartik Agaram2019-05-161-4/+8
|
* complete the skeleton of dquotes.subxKartik Agaram2019-05-1512-49/+210
| | | | | | | | | | | | | | | | Still some failing tests: - emit-string-literal-data doesn't ignore metadata when computing the length of literal strings - emit-string-literal-data doesn't handle escape sequences One issue doesn't have a failing test: - emit-metadata doesn't handle string literals containing '/' All these open issues involve a common design question: how to parse a 'word' that includes a string literal that may include spaces. For everything else I know words can't contain spaces and datums can't contain slashes. But for string literals things are tougher.
* Merge branch 'dquotes' into dquotes-1Kartik Agaram2019-05-153-69/+132
|\
| * Merge branch 'master' into dquotesKartik Agaram2019-05-153-69/+132
| |\
| | * 5163Kartik Agaram2019-05-152-11/+27
| | | | | | | | | | | | A few more places with flag corrections.
| | * 5162Kartik Agaram2019-05-151-7/+7
| | |
| | * 5161Kartik Agaram2019-05-151-27/+27
| | |
| | * 5160Kartik Agaram2019-05-153-16/+6
| | |
| | * 5159Kartik Agaram2019-05-151-11/+68
| | | | | | | | | | | | One more instruction where I forgot to update the carry flag.
* | | .Kartik Agaram2019-05-142-9/+9
| | |
* | | fix a stale register value in dquotes.subxKartik Agaram2019-05-142-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | How did things seem to be working until now? - We were saving an address from the stack to stream.read - When we read this address in skip-chars-matching:loop, we used to stop early But now we've moved the stack to a larger address, one where the most significant byte is set. When the stack address now gets to skip-chars-matching:loop, it's treated as a negative number and we proceed through the loop. At which point we try to index into the array using it. No real test to be written to protect against this :(
* | | Merge branch 'dquotes' into dquotes-1Kartik Agaram2019-05-1328-264/+1499
|\| | | | | | | | | | | | | | dquotes.subx is now segfaulting after this merge. Seems to be trying to use addresses from the old stack.
| * | Merge branch 'master' into dquotesKartik Agaram2019-05-1327-357/+1363
| |\|
| | * 5158Kartik Agaram2019-05-131-3/+3
| | |
| | * start using the new carry flagKartik Agaram2019-05-1318-60/+96
| | | | | | | | | | | | | | | Skimping on tests; the code changes seem pretty trivial. Will this fix CI?!
| | * flag tests for opcode 3dKartik Agaram2019-05-131-4/+47
| | |
| | * .Kartik Agaram2019-05-131-5/+5
| | |
| | * .Kartik Agaram2019-05-131-3/+2
| | |
| | * .Kartik Agaram2019-05-133-13/+13
| | |
| | * flag tests for opcode 2dKartik Agaram2019-05-131-1/+46
| | |
| | * flag tests for opcode 81Kartik Agaram2019-05-131-17/+135
| | |
| | * flag tests for opcode 05Kartik Agaram2019-05-132-2/+51
| | |
| | * .Kartik Agaram2019-05-131-7/+8
| | |
| | * flag tests for opcode 3bKartik Agaram2019-05-131-3/+61
| | |
| | * .Kartik Agaram2019-05-133-54/+52
| | | | | | | | | | | | | | | | | | Standardize layout of some code fragments, and fix several bugs in computing the overflow flag in the process. a64 = b32 + c32 doesn't benefit from `a` being 64-bit without casting `b`.
| | * flag tests for opcode 2bKartik Agaram2019-05-131-7/+69
| | |
| | * .Kartik Agaram2019-05-131-8/+8
| | |
| | * flag tests for opcode 03Kartik Agaram2019-05-131-7/+69
| | |
| | * .Kartik Agaram2019-05-132-24/+46
| | | | | | | | | | | | | | | Make the first instruction described something that doesn't touch flags, so we don't introduce too much complexity all at once.
| | * carry flag thoroughly tested in layer 13Kartik Agaram2019-05-132-31/+131
| | | | | | | | | | | | | | | This is time-consuming mostly for me to come up with example scenarios testing all the different combinations of flags.
| | * .Kartik Agaram2019-05-132-20/+20
| | | | | | | | | | | | Correct some confusing log messages.
| | * CF needs special handling for some arithmetic opsKartik Agaram2019-05-125-86/+248
| | | | | | | | | | | | Inline some macro definitions.
| | * .Kartik Agaram2019-05-122-7/+0
| | | | | | | | | | | | Drop some prints as a first step to straightening things out.
| | * snapshot of carry flag implementationKartik Agaram2019-05-125-62/+147
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Tests failing. This approach seems wrong. I'm not sure even the tests are correct. Also, some open questions: 1. Should setting the overflow flag always set the carry flag? 2. Should the carry flag only be set on add/subtract/compare, or by all arithmetic ops? 3. Had to turn off the -ftrapv flag in `build`. Is there a way to detect overflow without actually causing overflow? Once we start setting CF correctly we have to implement jump above/below instructions (8- and 32-bit displacement variants). https://github.com/akkartik/mu/issues/30