about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2020-09-28 20:11:40 -0700
committerKartik Agaram <vc@akkartik.com>2020-09-28 20:11:40 -0700
commit59391f2af4a5c744229c1746dc2b29ff871bd665 (patch)
tree09a44b08e95a9a6269c0090f11604d226fa2e305
parentdb469acb3ad1e996d41b842ca579def706c308dd (diff)
downloadmu-59391f2af4a5c744229c1746dc2b29ff871bd665.tar.gz
6894
-rw-r--r--mu_instructions9
1 files changed, 9 insertions, 0 deletions
diff --git a/mu_instructions b/mu_instructions
index c4f81dc3..4566669c 100644
--- a/mu_instructions
+++ b/mu_instructions
@@ -35,6 +35,7 @@ var/reg <- add var2/reg2          => "01/add-to %" reg " " reg2 "/r32"
 var/reg <- add var2               => "03/add *(ebp+" var2.stack-offset ") " reg "/r32"
 var/reg <- add *var2/reg2         => "03/add *" reg2 " " reg "/r32"
 add-to var1, var2/reg             => "01/add-to *(ebp+" var1.stack-offset ") " reg "/r32"
+add-to *var1/reg1, var2/reg2      => "01/add-to *" reg1 " " reg2 "/r32"
 var/eax <- add n                  => "05/add-to-eax " n "/imm32"
 var/reg <- add n                  => "81 0/subop/add %" reg " " n "/imm32"
 add-to var, n                     => "81 0/subop/add *(ebp+" var.stack-offset ") " n "/imm32"
@@ -44,6 +45,7 @@ var/reg <- subtract var2/reg2     => "29/subtract-from %" reg " " reg2 "/r32"
 var/reg <- subtract var2          => "2b/subtract *(ebp+" var2.stack-offset ") " reg "/r32"
 var/reg <- subtract *var2/reg2    => "2b/subtract *" reg2 " " reg1 "/r32"
 subtract-from var1, var2/reg2     => "29/subtract-from *(ebp+" var1.stack-offset ") " reg2 "/r32"
+subtract-from *var1/reg1, var2/reg2 => "29/subtract-from *" reg1 " " reg2 "/r32"
 var/eax <- subtract n             => "2d/subtract-from-eax " n "/imm32"
 var/reg <- subtract n             => "81 5/subop/subtract %" reg " " n "/imm32"
 subtract-from var, n              => "81 5/subop/subtract *(ebp+" var.stack-offset ") " n "/imm32"
@@ -53,6 +55,7 @@ var/reg <- and var2/reg2          => "21/and-with %" reg " " reg2 "/r32"
 var/reg <- and var2               => "23/and *(ebp+" var2.stack-offset " " reg "/r32"
 var/reg <- and *var2/reg2         => "23/and *" reg2 " " reg "/r32"
 and-with var1, var2/reg           => "21/and-with *(ebp+" var1.stack-offset ") " reg "/r32"
+and-with *var1/reg1, var2/reg2    => "21/and-with *" reg1 " " reg2 "/r32"
 var/eax <- and n                  => "25/and-with-eax " n "/imm32"
 var/reg <- and n                  => "81 4/subop/and %" reg " " n "/imm32"
 and-with var, n                   => "81 4/subop/and *(ebp+" var.stack-offset ") " n "/imm32"
@@ -62,6 +65,7 @@ var/reg <- or var2/reg2           => "09/or-with %" reg " " reg2 "/r32"
 var/reg <- or var2                => "0b/or *(ebp+" var2.stack-offset ") " reg "/r32"
 var/reg <- or *var2/reg2          => "0b/or *" reg2 " " reg "/r32"
 or-with var1, var2/reg2           => "09/or-with *(ebp+" var1.stack-offset " " reg2 "/r32"
+or-with *var1/reg1, var2/reg2     => "09/or-with *" reg1 " " reg2 "/r32"
 var/eax <- or n                   => "0d/or-with-eax " n "/imm32"
 var/reg <- or n                   => "81 1/subop/or %" reg " " n "/imm32"
 or-with var, n                    => "81 1/subop/or *(ebp+" var.stack-offset ") " n "/imm32"
@@ -71,6 +75,7 @@ var/reg <- xor var2/reg2          => "31/xor-with %" reg " " reg2 "/r32"
 var/reg <- xor var2               => "33/xor *(ebp+" var2.stack-offset ") " reg "/r32"
 var/reg <- xor *var2/reg2         => "33/xor *" reg2 " " reg "/r32"
 xor-with var1, var2/reg           => "31/xor-with *(ebp+" var1.stack-offset ") " reg "/r32"
+xor-with *var1/reg1, var2/reg2    => "31/xor-with *" reg1 " " reg2 "/r32"
 var/eax <- xor n                  => "35/xor-with-eax " n "/imm32"
 var/reg <- xor n                  => "81 6/subop/xor %" reg " " n "/imm32"
 xor-with var, n                   => "81 6/subop/xor *(ebp+" var.stack-offset ") " n "/imm32"
@@ -80,8 +85,11 @@ var/reg <- shift-left n           => "c1/shift 4/subop/left %" reg " " n "/imm32
 var/reg <- shift-right n          => "c1/shift 5/subop/right %" reg " " n "/imm32"
 var/reg <- shift-right-signed n   => "c1/shift 7/subop/right-signed %" reg " " n "/imm32"
 shift-left var, n                 => "c1/shift 4/subop/left *(ebp+" var.stack-offset ") " n "/imm32"
+shift-left *var/reg, n            => "c1/shift 4/subop/left *" reg " " n "/imm32"
 shift-right var, n                => "c1/shift 5/subop/right *(ebp+" var.stack-offset ") " n "/imm32"
+shift-right *var/reg, n           => "c1/shift 5/subop/right *" reg " " n "/imm32"
 shift-right-signed var, n         => "c1/shift 7/subop/right-signed *(ebp+" var.stack-offset ") " n "/imm32"
+shift-right-signed *var/reg, n    => "c1/shift 7/subop/right-signed *" reg " " n "/imm32"
 
 var/eax <- copy n                 => "b8/copy-to-eax " n "/imm32"
 var/ecx <- copy n                 => "b9/copy-to-ecx " n "/imm32"
@@ -91,6 +99,7 @@ var/esi <- copy n                 => "be/copy-to-esi " n "/imm32"
 var/edi <- copy n                 => "bf/copy-to-edi " n "/imm32"
 var/reg <- copy var2/reg2         => "89/<- %" reg " " reg2 "/r32"
 copy-to var1, var2/reg            => "89/<- *(ebp+" var1.stack-offset ") " reg "/r32"
+copy-to *var1/reg1, var2/reg2     => "89/<- *" reg1 " " reg2 "/r32"
 var/reg <- copy var2              => "8b/-> *(ebp+" var2.stack-offset ") " reg "/r32"
 var/reg <- copy *var2/reg2        => "8b/-> *" reg2 " " reg "/r32"
 var/reg <- copy n                 => "c7 0/subop/copy %" reg " " n "/imm32"