about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
* 6912Kartik Agaram2020-09-302-12/+12
|
* 6911 - comparing floatsKartik Agaram2020-09-305-23/+63
| | | | | | | It turns out floating-point operations set different flags than most instructions. We have to branch on them using unsigned jumps. https://stackoverflow.com/questions/7057501/x86-assembler-floating-point-compare/7057771#7057771
* 6910 - emulate most floating-point operationsKartik Agaram2020-09-302-4/+311
|
* 6909Kartik Agaram2020-09-301-6/+5
|
* 6908 - compiling all floating-point operationsKartik Agaram2020-09-3017-47/+843
| | | | | We don't yet support emulating these instructions in `bootstrap`. But generated binaries containing them run natively just fine.
* 6907 - converting to and from floating-pointKartik Agaram2020-09-292-9/+163
| | | | Some bugfixes to the previous commit.
* 6906Kartik Agaram2020-09-292-4/+4
|
* 6905 - first floating-point instruction compilingKartik Agaram2020-09-292-2/+275
| | | | (Though the generated code doesn't work yet.)
* 6904Kartik Agaram2020-09-292-133/+266
| | | | | New fields for primitives to support code-generation for floating-point primitives.
* 6903Kartik Agaram2020-09-292-0/+29
| | | | | | | | | | | | | | | | | | | Make a few tests more self-contained. I'd prefer to just run a function called `setup` first thing on startup and move this portion of convert-mu to it: # initialize global data structures c7 0/subop/copy *Next-block-index 1/imm32 8b/-> *Primitive-type-ids 0/r32/eax 89/<- *Type-id 0/r32/eax # stream-write c7 0/subop/copy *_Program-functions 0/imm32 c7 0/subop/copy *_Program-functions->payload 0/imm32 c7 0/subop/copy *_Program-types 0/imm32 c7 0/subop/copy *_Program-types->payload 0/imm32 c7 0/subop/copy *_Program-signatures 0/imm32 c7 0/subop/copy *_Program-signatures->payload 0/imm32 However, this approach doesn't fix my run_one_test tooling.
* 6902Kartik Agaram2020-09-296-34/+92
|
* 6901Kartik Agaram2020-09-292-8/+32
|
* 6900 - mu.subx: new primitive type 'float'Kartik Agaram2020-09-292-7/+29
| | | | Using it will currently emit incorrect programs.
* 6899Kartik Agaram2020-09-292-2/+2
|
* 6898 - names for floating-point xmm* registersKartik Agaram2020-09-295-2/+60
|
* 6897Kartik Agaram2020-09-291-0/+7
|
* 6896Kartik Agaram2020-09-282-5/+167
| | | | Readme-driven development for Mu's floating-point operations.
* 6895Kartik Agaram2020-09-281-0/+2
|
* 6894Kartik Agaram2020-09-281-0/+9
|
* 6893Kartik Agaram2020-09-281-6/+6
|
* 6892Kartik Agaram2020-09-271-1/+1
|
* 6891Kartik Agaram2020-09-271-1/+1
|
* 6890Kartik Agaram2020-09-271-3/+4
|
* 6889Kartik Agaram2020-09-272-4/+60
| | | | | Teach the self-hosted translator about the new /xm32 and /x32 metadata for floating-point registers.
* 6888Kartik Agaram2020-09-273-15/+124
| | | | Teach `bootstrap translate` about the new /xm32 and /x32 arguments.
* 6887Kartik Agaram2020-09-276-327/+327
| | | | | subx.md distinguishes between operands and arguments. Let's use that terminology more consistently in the sources.
* 6886 - floating-point divisionKartik Agaram2020-09-273-0/+55
|
* 6885 - starting on floating-point instructionsKartik Agaram2020-09-274-10/+115
| | | | | | | | | I spent some time deciding on the instructions. x87 is a stack ISA, so not a good fit for the rest of SubX. So we use SSE instead. They operate on 32-bit floats, which seems like a good fit. SSE has a bunch of instructions for operating on up to 4 floats at once. We'll ignore all that and just focus on so-called scalar instructions.
* 6884Kartik Agaram2020-09-271-2/+2
|
* 6883Kartik Agaram2020-09-261-2/+2
|
* 6882Kartik Agaram2020-09-261-8/+0
|
* 6881 - tile: function calls can now be expandedKartik Agaram2020-09-261-7/+20
|
* 6880Kartik Agaram2020-09-261-2/+25
| | | | | We need the state of the stack at the call-site. But rendering is already working surprisingly well.
* 6879Kartik Agaram2020-09-261-14/+18
| | | | Extract a new function.
* 6878 - tile: mock-up for expanding function callsKartik Agaram2020-09-261-8/+16
|
* 6877Kartik Agaram2020-09-262-2/+26
| | | | Track just whether to step inside or not.
* 6876Kartik Agaram2020-09-263-53/+10
| | | | Back to commit 6872.
* 6875Kartik Agaram2020-09-262-1/+29
| | | | | Snapshot. Caching subsidiary stacks is a dead end; they're just the final iteration. We need to render all iterations.
* 6874Kartik Agaram2020-09-261-1/+1
|
* 6873Kartik Agaram2020-09-262-8/+23
| | | | Now saving the subsidiary stack.
* 6872Kartik Agaram2020-09-261-0/+2
| | | | Hackily show function definition.
* 6871Kartik Agaram2020-09-262-2/+3
| | | | Segfault now fixed. Everything seems to be working again.
* 6870Kartik Agaram2020-09-266-65/+103
| | | | | | Emit a stack of not ints but more complex objects containing the int payload. Function calls again segfaulting.
* 6869Kartik Agaram2020-09-261-5/+5
|
* 6868Kartik Agaram2020-09-263-17/+81
| | | | First function call working in apps/tile!
* 6867Kartik Agaram2020-09-261-2/+5
| | | | Segfault fixed. This shouldn't have been so hard.
* 6866Kartik Agaram2020-09-261-0/+3
|
* 6865Kartik Agaram2020-09-262-1/+5
|
* 6864Kartik Agaram2020-09-261-1/+3
|
* 6863Kartik Agaram2020-09-262-1/+6
|