X-Git-Url: http://git.subgeniuskitty.com/vvhitespace/.git/blobdiff_plain/7967fb7d404c4f3d20a598c280230a12ca45880d..8b4ce1c2f80eb7b5fc7d5a727d016ef2cb3c6123:/stdlib_tests/3003_rshift.pvvs diff --git a/stdlib_tests/3003_rshift.pvvs b/stdlib_tests/3003_rshift.pvvs new file mode 100644 index 0000000..5c70023 --- /dev/null +++ b/stdlib_tests/3003_rshift.pvvs @@ -0,0 +1,51 @@ +@ Shift by zero. +SSSTN | PUSH +1 +SSSSN | PUSH 0 +NSTTSTTSSN | JSR > 101100 (rshift) +NSTTSSTN | JSR > 1001 (print number from stack) + +@ Shift by one, positive sign extension. +SSSTSN | PUSH +2 +SSSTN | PUSH +1 +NSTTSTTSSN | JSR > 101100 (rshift) +NSTTSSTN | JSR > 1001 (print number from stack) + +@ Shift by four, positive sign extension. +SSSTSSSSN | PUSH +16 +SSSTSSN | PUSH +4 +NSTTSTTSSN | JSR > 101100 (rshift) +NSTTSSTN | JSR > 1001 (print number from stack) + +@ Shift by one, negative sign extension. +@ -9223372036854775805 = 1000000000000000000000000000000000000000000000000000000000000011 +@ -4611686018427387903 = 1100000000000000000000000000000000000000000000000000000000000001 +SSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTSTN | PUSH -9223372036854775805 +SSSTN | PUSH +1 +NSTTSTTSSN | JSR > 101100 (rshift) +NSTTSSTN | JSR > 1001 (print number from stack) + +@ Shift by four, negative sign extension +@ -9223372036854775638 = 1000000000000000000000000000000000000000000000000000000010101010 +@ -576460752303423478 = 1111100000000000000000000000000000000000000000000000000000001010 +SSTSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTSTSTSTTSN | PUSH -9223372036854775638 +SSSTSSN | PUSH +4 +NSTTSTTSSN | JSR > 101100 (rshift) +NSTTSSTN | JSR > 1001 (print number from stack) + +@ Test for special case: rshift(-1) = -1 +SSTTN | PUSH -1 +SSSTN | PUSH +1 +NSTTSTTSSN | JSR > 101100 (rshift) +NSTTSSTN | JSR > 1001 (print number from stack) + +@ Shift a single 1 in the MSb into all ones +SSTTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSN | PUSH -(2^63) +SSSTTTTTTN | PUSH +63 +NSTTSTTSSN | JSR > 101100 (rshift) +NSTTSSTN | JSR > 1001 (print number from stack) + +@ All done. +NNN | DIE + +#include +#include