about summary refs log tree commit diff stats
path: root/subx/031check_operands.cc
Commit message (Collapse)AuthorAgeFilesLines
* 4909Kartik Agaram2019-01-051-17/+30
| | | | Improve error checking to warn on unexpected displacements as well.
* 4908Kartik Agaram2019-01-051-0/+1
| | | | | | | | Fix CI. a) Update canonical binaries. b) Fix an out-of-bounds access in `clear-stream`. This also required supporting a new instruction in `subx run` to load an imm8 into rm8.
* 4886Kartik Agaram2018-12-281-6/+2
|
* 4882Kartik Agaram2018-12-281-15/+26
|
* 4830Kartik Agaram2018-12-031-3/+9
| | | | | | New helper: printing a byte in textual (hex) form. This required adding instructions for bitwise shift operations.
* 4776Kartik Agaram2018-11-251-15/+11
| | | | | | | | | | | | | Crenshaw compiler now runs natively as well. It turns out I was misreading the Intel manual, and the jump instructions that I thought take disp16 operands actually take disp32 operands by default on both i686 and x86_64 processors. The disp16 versions are some holdover from the 16-bit days. This was the first time I've used one of these erstwhile-disp16 instructions, but I still haven't tested most of them. We'll see if we run into future issues.
* 4718Kartik Agaram2018-10-241-1/+1
|
* 4714Kartik Agaram2018-10-231-1/+21
| | | | Improve error-checking for unnecessary displacement operands.
* 4697Kartik Agaram2018-10-141-6/+16
|
* 4695Kartik Agaram2018-10-141-7/+7
|
* 4694Kartik Agaram2018-10-131-7/+7
| | | | Check for duplicate docstrings.
* 4668Kartik Agaram2018-10-051-4/+1
|
* 4503Kartik Agaram2018-09-221-0/+2
| | | | Include LEA (load effective address) in the SubX subset of x86 ISA.
* 4578 - subx: implement inc/dec operationsKartik Agaram2018-09-211-0/+18
|
* 4544Kartik Agaram2018-09-121-12/+12
| | | | | | | | Attempt #3 at fixing CI. In the process the feature gets a lot less half-baked. Ridiculously misleading that we had `has_metadata()` was special-cased to one specific transform. I suck.
* 4537Kartik Agaram2018-09-071-2/+1
| | | | | | | | | | | | | | | Streamline the factorial function; we don't need to save a stack variable into a register before operating on it. All instructions can take a stack variable directly. In the process we found two bugs: a) Opcode f7 was not implemented correctly. It was internally consistent but I'd never validated it against a natively running program. Turns out it encodes multiple instructions, not just 'not'. b) The way we look up imm32 operands was sometimes reading them before disp8/disp32 operands.
* 4527 - reading commandline argumentsKartik Agaram2018-08-301-0/+2
| | | | | | | | | | | The new example ex9 doesn't yet work natively. In the process I've emulated the kernel's role in providing args, implemented a couple of instructions acting on 8-bit operands (useful for ASCII string operations), and begun the start of the standard library (ascii_length is the same as strlen). At the level of SubX we're just only going to support ASCII.
* 4503Kartik Agaram2018-08-111-0/+9
|
* 4501Kartik Agaram2018-08-111-1/+1
|
* 4499Kartik Agaram2018-08-091-1/+1
| | | | | More tweaks for check passes. Ensure they're never first-class transforms.
* 4483Kartik Agaram2018-08-041-0/+511
Reorganize layers in accordance with the plan in layer 29.