diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2021-05-16 21:58:13 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2021-05-16 21:58:13 -0700 |
commit | fb0f0748bcb7e6d24b87b4d3fc45aa7410c641e0 (patch) | |
tree | 5dbb5cf3183519b4fc4df3beef502308949fd603 /506math.mu | |
parent | 6a47fad86f14e3181542aac671595f7b97ce4b0f (diff) | |
download | mu-fb0f0748bcb7e6d24b87b4d3fc45aa7410c641e0.tar.gz |
press '+' and '-' to zoom in and out respectively
Diffstat (limited to '506math.mu')
-rw-r--r-- | 506math.mu | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/506math.mu b/506math.mu index d4e4194c..40b8ccdb 100644 --- a/506math.mu +++ b/506math.mu @@ -19,3 +19,35 @@ fn sgn n: int -> _/eax: int { } return 0 } + +fn shift-left-by n: int, bits: int -> _/eax: int { + var i/eax: int <- copy bits + { + compare i, 0 + break-if-<= + shift-left n, 1 + i <- decrement + loop + } + return n +} + +fn shift-right-by n: int, bits: int -> _/eax: int { + var i/eax: int <- copy bits + { + compare i, 0 + break-if-<= + shift-right n, 1 + i <- decrement + loop + } + return n +} + +fn clear-lowest-bits _n: (addr int), bits: int { + var dest/edi: (addr int) <- copy _n + var n/eax: int <- copy *dest + n <- shift-right-by n, bits + n <- shift-left-by n, bits + copy-to *dest, n +} |