about summary refs log tree commit diff stats
path: root/subx/022check_instruction.cc
Commit message (Collapse)AuthorAgeFilesLines
* 4437 - support for labels is half-doneKartik Agaram2018-07-271-0/+1
|
* 4434Kartik Agaram2018-07-271-115/+127
| | | | | | | | Key core data structures by hex bytes in text rather than opcode numbers. Saves us round trips of having to parse and reparse strings, and also allows us to more easily ignore unexpected non-hex words in each transform. We'll use this ability next when we start inserting labels.
* 4432Kartik Agaram2018-07-261-3/+3
| | | | | Good idea from @tekknolagi: make more explicit that the first segment is code.
* 4430Kartik Agaram2018-07-261-8/+8
|
* 4429 - syntax checking for multi-byte opcodesKartik Agaram2018-07-261-2/+49
| | | | We don't have any supported 3-byte opcodes at the moment.
* 4415Kartik Agaram2018-07-251-3/+7
|
* 4414 - subx: syntax checkingKartik Agaram2018-07-251-0/+613
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a large patch, and there's a few things wrong with it: a) Helpers are incredibly messy. I want to use has_metadata in layer 24, but can't since it also does error checking. There must be a better basis set of primitives for managing metadata. b) Layer 22 introduces operands for checking, but programs with operands don't actually run until layer 24. So I can't write non-error scenarios in layer 22. That seems ugly. But if I try to introduce layer 24 first there's nothing left to check after it. I *could* play tricks with ordering layers vs transforms. Mu does that a bit, but it becomes hard to mess with, so I'm trying to avoid that. My current plan is for layers within an "abstraction level" to be run in order. Higher layers will necessarily need to come before lower ones. But hopefully this level of hierarchy will help manage the chaos. c) The check for whether an instruction is all hex bytes makes me nervous. I do want to check that an instruction that's just: cd tells the programmer that an operand is missing. The check I currently have is likely not perfectly correct. I *could* put layer 25 in its own commit. But I guess I'm not doing that now. We have a new example program: hello world!
* 4397 - temporarily revert syntax checksKartik Agaram2018-07-241-587/+0
| | | | | | | | | I accidentally published commit 4387, which is broken; most example files are untranslateable. I spent a while trying to push on through, but packing operands correctly into bytes has been surprisingly difficult. Fixing the repo without further delay.
* 4395Kartik Agaram2018-07-241-2/+37
|
* 4394Kartik Agaram2018-07-241-2/+2
|
* 4391 - checks for modrm-based instructionsKartik Agaram2018-07-231-10/+146
|
* 4390 - check for instruction operand overflowKartik Agaram2018-07-231-0/+2
|
* 4387Kartik Agaram2018-07-221-1/+8
|
* 4386 - start of syntax-checkingKartik Agaram2018-07-221-0/+321
|
* 4385 - online help on addressing modesKartik Agaram2018-07-211-0/+86