# The OS/K Team licenses this file to you under the MIT license. # See the LICENSE file in the project root for more information. #---------------------------------------------------------------------------# # Movement instructions # #---------------------------------------------------------------------------# # # Load Effective Address (LEA) instruction # # $1 = ADDR($2) # # For instance: # LEA RAX, [RBX + RCX + 4] # will result in: # RAX = RBX + RCX + 4 # # Preserves all flags # lea rm m # # Movement (MOV) instruction # # $1 = $2 # mov rm rim # # Movement with zero-extension (MOVZX) instruction # # $1 = ZeroExtend($2) # movzx rm m # # Exchange (XCHG) instruction # # $_ = $1 # $1 = $2 # $2 = $_ # xchg rm rim # # Compare-and-exchange (CMPXCHG) instruction # # IF ($1 == RAX) THEN # $1 = $2 # ZF = 1 # ELSE # RAX = $1 # ZF = 0 # FI # # Preserves CF, OF and SF # cmpxchg rm rim # # Load argument #N (LDARG) # # IF ($2 < 8) THEN # $1 = AX$2 # ELSE # $1 = LX($2-8) # FI # # Throws: # #ILL if $2 ≥ 16 # ldarg rm rim # # Get code/data offset (GCO/GCD) # # $1 = CR1 (GCO) # $1 = CR2 (GCD) # gco rm gcd rm