https://github.com/akkartik/mu/blob/main/linux/406int32.mu
1
2
3
4
5 fn repeated-shift-left nr: int, dr: int -> _/eax: int {
6 var result/eax: int <- copy nr
7 {
8 compare dr, 0
9 break-if-<=
10 result <- shift-left 1
11 decrement dr
12 loop
13 }
14 return result
15 }
16
17
18
19 fn repeated-shift-right nr: int, dr: int -> _/eax: int {
20 var result/eax: int <- copy nr
21 {
22 compare dr, 0
23 break-if-<=
24 result <- shift-right 1
25 decrement dr
26 loop
27 }
28 return result
29 }
30
31 fn abs n: int -> _/eax: int {
32 var result/eax: int <- copy n
33 {
34 compare n, 0
35 break-if->=
36 result <- negate
37 }
38 return result
39 }