# The OS/K Team licenses this file to you under the MIT license. # See the LICENSE file in the project root for more information. #---------------------------------------------------------------------------# # Debugging instructions # #---------------------------------------------------------------------------# # # Breakpoint instruction (BREAK) # # (cause register dump on standard error) # (wait for user input before proceeeding) # break # # Toggles instruction dumping (DUMP) # # (toggles instruction dumping) # dump #---------------------------------------------------------------------------# # Misc. instructions # #---------------------------------------------------------------------------# # # Do nothing (NOOP) # # (nothing) # # Throws: # (nothing) # # Preserves all flags # nop # # Pause the CPU for a very short amount of time (PAUSE) # Used in spin-like loops # pause # # Pause the CPU for a relatively long time (XPAUSE) # # Throws: # #SYS if not in supervisor mode # xpause # # Get timestamp in seconds # time r # # $1 = seconds since start of month # $2 = current month # $3 = current year # ytime r r r # # Get timestamp in µseconds # utime r # # CPU Identification Number # # Does nothing (for now) # cpuid #---------------------------------------------------------------------------# # Clean-up misc. instructions # #---------------------------------------------------------------------------# # # Clear all GPR registers except RBP/RSP # cls # # Clear base registers except RBP/RSP (CLR) # clr # # Clear argument registers (CLA) # cla # # Clear nonvolatile registers (CLN) # cln #---------------------------------------------------------------------------# # Flag manipulation instructions # #---------------------------------------------------------------------------# # # Clear or set interrupt flag (CLI/STI) # # Throws: # #SYS if not in supervisor mode # cli sti # # Clear or set direction flag (CLD/STD) # cld std # # Complement, clear or set carry flag (CMC/CLC/STC) # cmc clc stc #---------------------------------------------------------------------------# # Byte-wise / bit-wise manipulation instructions # #---------------------------------------------------------------------------# # # Byte/word/dword swap (xSWAP) # # Change endianness # bswap r r wswap r r dswap r r #---------------------------------------------------------------------------# # I/O instructions # #---------------------------------------------------------------------------# # # Send a character to standard output (PRN) # prn rim # # Print a string to standard output (PRN) # # COMPARE([%1], 0) # # IF (ZF == 0) THEN # PRN([%1]) # IF (DF == 0) THEN # %1 = %1 + 1 # ELSE # %1 = %1 - 1 # FI # FI # # prns r # # Scan a character from standard input (SCAN) # scan r