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 _)