First develop commit. Adding all existing files.
This commit is contained in:
35
resources/TOY/multiply-function.toy
Normal file
35
resources/TOY/multiply-function.toy
Normal file
@@ -0,0 +1,35 @@
|
||||
program Multiply-function
|
||||
// Input: x, y, and z
|
||||
// Output: x * y * z
|
||||
// Remarks: Inefficient for large or negative values of x or y
|
||||
// -----------------------------------------------------------------------------
|
||||
10: 82FF read R[2] x
|
||||
11: 83FF read R[3] y
|
||||
12: 84FF read R[4] z
|
||||
|
||||
// Multiply x and y
|
||||
13: 1A20 R[A] <- R[2] x
|
||||
14: 1B30 R[B] <- R[3] y
|
||||
15: FF30 R[F] <- pc; goto 30 x * y
|
||||
|
||||
// Multiply (x * y) and z
|
||||
16: 1AC0 R[A] <- R[C] x * y
|
||||
17: 1B40 R[B] <- R[4] z
|
||||
18: FF30 R[F] <- pc; goto 30 (x * y) * z
|
||||
|
||||
19: 9CFF write R[C]
|
||||
1A: 0000 halt
|
||||
|
||||
function multiply
|
||||
// Input: R[A] and R[B] (should be passed by value)
|
||||
// Return address: R[F]
|
||||
// Output: R[C] = R[A] * R[B]
|
||||
// Temporary variables: R[1] = 1
|
||||
|
||||
30: 7C00 R[C] <- 0000
|
||||
31: 7101 R[1] <- 0001
|
||||
32: CA36 if (R[A] == 0) goto 36
|
||||
33: 1CCB R[C] <- R[C] + R[B]
|
||||
34: 2AA1 R[A] <- R[A] - R[1]
|
||||
35: C032 goto 32
|
||||
36: EF00 goto R[F]
|
||||
Reference in New Issue
Block a user