program Chop // Input: N // Output: The unique set of powers of 2 which sum to N // Remarks: This program uses the fact that numbers in the toy machine are // represented by 16-bit signed two's complement numbers. To learn // more about signed two's complement numbers, please see Professor // Wayne's notes on the TOY machine. Note: a non-positive value of N // will cause undefined behavior. // ----------------------------------------------------------------------------- // Initialize 10: 82FF read R[2] // Check for non-positive values 11: D213 if (R[2] > 0) goto 13 12: 0000 halt // Loop 13: 2302 R[3] <- -R[2] 14: 3423 R[4] <- R[2] & R[3] 15: 94FF write R[4] 16: 2224 R[2] <- R[2] - R[4] 17: D211 if (R[2] > 0) goto 11 18: 0000 halt