From 8dc3c85a0336acfcb8c0fb67ea10307769f3dad2 Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Sat, 29 May 2021 15:40:58 -0700 Subject: [PATCH] . Minor counter infrastructure. We invoke next-token 1400 times while loading the shell's data disk, so we're wasting around 1.4MB during tokenization. --- 318counter.subx | 31 +++++++++++++++++++++++++++++++ 400.mu | 3 +++ 2 files changed, 34 insertions(+) create mode 100644 318counter.subx diff --git a/318counter.subx b/318counter.subx new file mode 100644 index 00000000..74e1f4f8 --- /dev/null +++ b/318counter.subx @@ -0,0 +1,31 @@ +# A rudimentary counter that can be called from anywhere. + +== code + +count-event: + # . prologue + 55/push-ebp + 89/<- %ebp 4/r32/esp + # + ff 0/subop/increment *Foo +$count-event:end: + # . epilogue + 89/<- %esp 5/r32/ebp + 5d/pop-to-ebp + c3/return + +count-of-events: # -> _/eax: int + # . prologue + 55/push-ebp + 89/<- %ebp 4/r32/esp + # + 8b/-> *Foo 0/r32/eax +$count-of-events:end: + # . epilogue + 89/<- %esp 5/r32/ebp + 5d/pop-to-ebp + c3/return + +== data +Foo: + 0/imm32 diff --git a/400.mu b/400.mu index 3b81d44a..23890ea9 100644 --- a/400.mu +++ b/400.mu @@ -34,6 +34,9 @@ sig turn-off-debug-print sig abort e: (addr array byte) sig dump-call-stack +sig count-event +sig count-of-events -> _/eax: int + # streams sig clear-stream f: (addr stream _) sig rewind-stream f: (addr stream _)