Commit Graph

70 Commits

Author SHA1 Message Date
Kartik K. Agaram 8e9ddaee55 . 2021-11-11 12:52:51 -08:00
Kartik Agaram 1f9b16680f . 2021-11-09 09:38:54 -08:00
Kartik K. Agaram 1de8526e0c . 2021-10-30 12:11:47 -07:00
Kartik K. Agaram 34f37b8944 clean up treeshaking support for baremetal
Check minified sizes by running:
  tools/translate_minified _files_
  ls -l a.bin
  qemu-system-i386 code.img

What I had before was for the linux/ version.
2021-10-30 07:29:15 -07:00
Kartik K. Agaram ee1b0d19b6 . 2021-10-10 08:35:59 -07:00
Kartik K. Agaram 38909fbce0 . 2021-09-01 14:21:04 -07:00
Kartik K. Agaram 982dfeb217 . 2021-08-11 19:44:20 -07:00
Kartik K. Agaram 7670161ca4 . 2021-08-11 19:25:27 -07:00
Kartik K. Agaram 350a255134 new tool: creating a data disk 2021-08-10 08:59:00 -07:00
Kartik K. Agaram 78357b8852 . 2021-07-16 08:38:43 -07:00
Kartik Agaram 372367f59a html: better highlighting for int registers 2021-06-26 20:55:36 -07:00
Kartik Agaram f7a7db83ef .
Drop some long-obsolete tooling. I no longer use iTerm2.
2021-06-26 08:39:05 -07:00
Kartik Agaram 614d0ecff4 . 2021-06-15 20:56:41 -07:00
Kartik Agaram c6343de7b0 . 2021-05-02 00:00:54 -07:00
Kartik Agaram f0e146fc7b . 2021-05-01 23:52:28 -07:00
Kartik Agaram c2aeba0a11 . 2021-03-24 09:12:32 -07:00
Kartik Agaram 754d813bc5 . 2021-03-23 23:02:41 -07:00
Kartik Agaram 3120f938c6 . 2021-03-23 22:27:59 -07:00
Kartik Agaram 895093b3cf . 2021-03-23 17:41:31 -07:00
Kartik Agaram c4199646d7 . 2021-03-23 17:34:07 -07:00
Kartik Agaram 3350c34a74 . 2021-03-23 17:31:08 -07:00
Kartik K. Agaram 2d306e2a98 7846 2021-03-04 00:11:23 -08:00
Kartik K. Agaram 71e4f38129 7842 - new directory organization
Baremetal is now the default build target and therefore has its sources
at the top-level. Baremetal programs build using the phase-2 Mu toolchain
that requires a Linux kernel. This phase-2 codebase which used to be at
the top-level is now under the linux/ directory. Finally, the phase-2 toolchain,
while self-hosting, has a way to bootstrap from a C implementation, which
is now stored in linux/bootstrap. The bootstrap C implementation uses some
literate programming tools that are now in linux/bootstrap/tools.

So the whole thing has gotten inverted. Each directory should build one
artifact and include the main sources (along with standard library). Tools
used for building it are relegated to sub-directories, even though those
tools are often useful in their own right, and have had lots of interesting
programs written using them.

A couple of things have gotten dropped in this process:
  - I had old ways to run on just a Linux kernel, or with a Soso kernel.
    No more.
  - I had some old tooling for running a single test at the cursor. I haven't
    used that lately. Maybe I'll bring it back one day.

The reorg isn't done yet. Still to do:
  - redo documentation everywhere. All the README files, all other markdown,
    particularly vocabulary.md.
  - clean up how-to-run comments at the start of programs everywhere
  - rethink what to do with the html/ directory. Do we even want to keep
    supporting it?

In spite of these shortcomings, all the scripts at the top-level, linux/
and linux/bootstrap are working. The names of the scripts also feel reasonable.
This is a good milestone to take stock at.
2021-03-03 22:21:03 -08:00
Kartik Agaram 74ed21ab14 7746 2021-02-14 16:48:02 -08:00
Kartik Agaram 8cff1c04e3 7745 2021-02-14 16:29:19 -08:00
Kartik Agaram 9ebe6b3876 7688 2021-02-06 22:05:24 -08:00
Kartik Agaram 762107fdc2 7476 2020-12-30 09:39:50 -08:00
Kartik Agaram 00c4d61221 7472 2020-12-29 21:20:36 -08:00
Kartik Agaram 395f736d1a 7464 2020-12-29 19:28:56 -08:00
Kartik Agaram 490b26d061 7426 2020-12-27 10:57:44 -08:00
Kartik Agaram 761001dadc 7405 2020-12-26 14:29:02 -08:00
Kartik Agaram dd60a1d73c 7252 2020-11-16 20:44:02 -08:00
Kartik Agaram 6ecece2e70 7236 2020-11-14 20:02:01 -08:00
Kartik Agaram 236cf88a3e 7233 - fix some warnings from gcc 9
Make strncpy a little less error-prone.
Just use memcpy where that suffices:
  https://stackoverflow.com/questions/56782248/gcc-specified-bound-depends-on-the-length-of-the-source-argument/56782476#56782476
2020-11-13 20:53:32 -08:00
Kartik Agaram 91a5f3e103 6774 2020-09-11 00:59:56 -07:00
Kartik Agaram de0e57d3ce 6674 2020-07-25 15:35:43 -07:00
Kartik Agaram 1c349ac7c5 6631 2020-07-11 00:02:29 -07:00
Kartik Agaram 3ccb2c8328 6617 2020-07-05 15:48:17 -07:00
Kartik Agaram cf28645f8a 6610 - tweak the Linux boot image generator
So far we hardcoded the translation process and it only supported SubX.
Now we pass in an ELF binary and outsource how it's generated.
2020-07-05 10:38:18 -07:00
Kartik Agaram 02dade7b22 - 2020-05-18 00:44:50 -07:00
Kartik Agaram 1de6f28042 mu.subx: make handles in Primitives easier to read 2020-05-18 00:44:49 -07:00
Kartik Agaram 5170e27ce8 6207 - tweaks while creating a video
https://futureofcoding.org/two-minute-week
2020-04-19 09:32:46 -07:00
Kartik Agaram 28746b3666 6123 - runtime helper for initializing arrays
I built this in 3 phases:
a) create a helper in the bootstrap VM to render the state of the stack.
b) interactively arrive at the right function (tools/stack_array.subx)
c) pull the final solution into the standard library (093stack_allocate.subx)

As the final layer says, this may not be the fastest approach for most
(or indeed any) Mu programs. Perhaps it's better on balance for the compiler
to just emit n/4 `push` instructions.

(I'm sure this solution can be optimized further.)
2020-03-11 17:21:59 -07:00
Kartik Agaram 6a28260f19 6003 2020-02-09 21:12:41 -08:00
Kartik Agaram 8fa733606c 6002 2020-02-09 21:03:04 -08:00
Kartik Agaram 75bb5e4ab1 5910
Trace browser: Don't let the background color get too light, and cycle
back to darker shades so I'm not squinting at low depths.
2020-01-20 02:58:31 -08:00
Kartik Agaram b89ce8e455 5900 2020-01-19 17:53:06 -08:00
Kartik Agaram ab837e8f6c 5899 2020-01-19 17:52:25 -08:00
Kartik Agaram 6070c23e5e 5897 - rename comparison instructions
Signed and unsigned don't quite capture the essence of what the different
combinations of x86 flags are doing for SubX. The crucial distinction is
that one set of comparison operators is for integers and the second is
for addresses.
2020-01-16 18:31:12 -08:00
Kartik Agaram 564ced70fd 5891 2020-01-14 01:52:54 -08:00