@ Shift by zero. SSSTN | PUSH +1 SSSSN | PUSH 0 NSTTSTTSSN | JSR > 101100 (rshift) NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Shift by one, positive sign extension. SSSTSN | PUSH +2 SSSTN | PUSH +1 NSTTSTTSSN | JSR > 101100 (rshift) NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Shift by four, positive sign extension. SSSTSSSSN | PUSH +16 SSSTSSN | PUSH +4 NSTTSTTSSN | JSR > 101100 (rshift) NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Shift by one, negative sign extension. @ -9223372036854775805 = 1000000000000000000000000000000000000000000000000000000000000011 @ -4611686018427387903 = 1100000000000000000000000000000000000000000000000000000000000001 SSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTSTN | PUSH -9223372036854775805 SSSTN | PUSH +1 NSTTSTTSSN | JSR > 101100 (rshift) NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Shift by four, negative sign extension @ -9223372036854775638 = 1000000000000000000000000000000000000000000000000000000010101010 @ -576460752303423478 = 1111100000000000000000000000000000000000000000000000000000001010 SSTSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTSTSTSTTSN | PUSH -9223372036854775638 SSSTSSN | PUSH +4 NSTTSTTSSN | JSR > 101100 (rshift) NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Test for special case: rshift(-1) = -1 SSTTN | PUSH -1 SSSTN | PUSH +1 NSTTSTTSSN | JSR > 101100 (rshift) NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ Shift a single 1 in the MSb into all ones SSTTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSN | PUSH -(2^63) SSSTTTTTTN | PUSH +63 NSTTSTTSSN | JSR > 101100 (rshift) NSTTTTTSTN | JSR > 111101 (debug:printsignednumber) @ All done. NNN | DIE #include #include