about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
* 4776Kartik Agaram2018-11-254-100/+90
| | | | | | | | | | | | | 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.
* 4775Kartik Agaram2018-11-245-213/+857
| | | | | | | Start with an exactly corresponding version to Crenshaw 2-1: single-digit numbers. The only change: we assume the number is in hex. The next version now supports multi-digit hex numbers.
* 4774Kartik Agaram2018-11-243-23/+2
| | | | Simplification.
* 4773 - done with crenshaw chapter 2-1Kartik Agaram2018-11-245-15/+128
| | | | In the process I had to fix a couple more bugs in support for disp16 instructions.
* 4772Kartik Agaram2018-11-242-2/+4
|
* 4771Kartik Agaram2018-11-242-0/+7
| | | | | | | I stopped handling disp16 at some point, and using instructions with such an operand messes up segment alignment when generating ELF binaries. I don't test my ELF generation. This is a sign that maybe I should start.
* 4770Kartik Agaram2018-11-241-6/+6
|
* 4769Kartik Agaram2018-11-241-9/+37
|
* 4768Kartik Agaram2018-11-243-0/+240
|
* 4767Kartik Agaram2018-11-243-50/+50
|
* 4766Kartik Agaram2018-11-241-3/+4
|
* 4765Kartik Agaram2018-11-231-1/+2
|
* 4764Kartik Agaram2018-11-232-5/+221
|
* 4763 - back to the 'trivial' crenshaw2-1 compilerKartik Agaram2018-11-233-2/+426
| | | | | This time I've ported (and test-driven) 'GetChar' and 'GetNum'. The new tests bring together our new testable interfaces for read() and exit().
* 4762Kartik Agaram2018-11-231-5/+8
|
* 4761Kartik Agaram2018-11-234-12/+11
| | | | | Bugfix: I forgot about ELF segment offsets when implementing VMAs. Eventually segments grew large enough that I started seeing overlaps.
* 4760Kartik Agaram2018-11-214-0/+8
|
* 4759Kartik Agaram2018-11-208-10/+10
|
* 4758Kartik Agaram2018-11-201-4/+4
|
* 4757Kartik Agaram2018-11-206-40/+46
| | | | | | Let's start highlighting all global variables in Red. Assembly programming has a tendency to over-use them. They're a necessary evil, but we should minimize the number of functions that access them.
* 4756Kartik Agaram2018-11-196-4/+4
| | | | | Long-standing and long-copied typo has been messing with our exit status on test failures.
* 4755 - read-byte (sometimes called getchar)Kartik Agaram2018-11-193-0/+243
|
* 4754 - allow data segment to refer to variablesKartik Agaram2018-11-193-13/+55
|
* 4753Kartik Agaram2018-11-191-5/+5
|
* 4752Kartik Agaram2018-11-181-24/+24
|
* 4751Kartik Agaram2018-11-181-0/+6
|
* 4750Kartik Agaram2018-11-181-0/+4
| | | | | There can be situations where a run is striding through a segment. Reduce the number of reallocations that reallocations that requires.
* 4749 - speed up testsKartik Agaram2018-11-181-8/+14
| | | | | | | When we implemented 'read' our apps went over 0x1000 bytes, so I grew the initial segment size. But that slowed down emulation because each test was reallocating all segments. Now we allocate small segments at the start, and grow them gradually as needed.
* 4748Kartik Agaram2018-11-181-4/+4
| | | | Fix CI.
* 4747 - subx: 'read' primitiveKartik Agaram2018-11-185-16/+385
|
* 4746Kartik Agaram2018-11-171-17/+17
|
* 4745Kartik Agaram2018-11-173-1/+1
|
* 4744Kartik Agaram2018-11-171-2/+2
|
* 4743Kartik Agaram2018-11-123-4/+5
|
* 4742Kartik Agaram2018-11-051-1/+2
|
* 4741Kartik Agaram2018-10-303-16/+46
| | | | Extract a helper that we'll need for 'read'.
* 4740Kartik Agaram2018-10-303-53/+57
|
* 4739Kartik Agaram2018-10-301-3/+3
|
* 4738Kartik Agaram2018-10-302-12/+13
|
* 4737Kartik Agaram2018-10-301-1/+1
|
* 4736Kartik Agaram2018-10-293-43/+48
| | | | | | | | | We'll use a common stream data structure for input and output streams. Having separate types makes more sense in a more high-level language, where we have type checking and where functions for handling the different types are more concise. But in machine code the sweet spot is more toward fewer types.
* 4735Kartik Agaram2018-10-281-6/+6
|
* 4734Kartik Agaram2018-10-2834-1945/+1956
|
* 4733Kartik Agaram2018-10-281-1/+1
|
* 4732Kartik Agaram2018-10-282-4/+3
|
* 4731Kartik Agaram2018-10-287-25/+25
|
* 4730Kartik Agaram2018-10-281-1/+1
|
* 4729Kartik Agaram2018-10-285-42/+54
| | | | | | Start injecting all dependencies in the Crenshaw compiler app. In the process I realized the non-fake code path of 'stop' had a bug.
* 4728Kartik Agaram2018-10-281-1/+1
| | | | | What is this '|| exit 1' construct?! No need for it in the presence of ERREXIT.
* 4727 - commit to better 64-bit supportKartik Agaram2018-10-272-18/+16
| | | | | | | I've started testing more regularly on 64-bit Linux, and I realize that the binaries actually now compare identical even on 64-bit. Why did I ever add that condition to CI? Seems to be working now on Travis. Let's start comparing now and see if the problem happens again.