]> git.mdlowis.com Git - proto/obnc.git/commitdiff
more implementation of binary operations
authorMichael D. Lowis <mike.lowis@gentex.com>
Wed, 2 Mar 2022 22:08:31 +0000 (17:08 -0500)
committerMichael D. Lowis <mike.lowis@gentex.com>
Wed, 2 Mar 2022 22:08:31 +0000 (17:08 -0500)
cerise/backend/ssa/codegen.c
cerise/tests/Module.m

index 24ee6869c0f69d631a2f3a8edf5bc9265cb3f6dd..0a0bf5b67f7fa2bf4584f69051fb5591e92c5864 100644 (file)
@@ -291,7 +291,13 @@ void print_op(Parser* p, SsaNode* expr)
         case MODE_BINOP:
             printf("    ");
             print_ident(p, &(expr->dest));
-            printf(" = \n");
+            printf(" = %s ", binop_name(expr));
+            emit_type(expr->type);
+            printf(" ");
+            print_ident(p, &(expr->left.var));
+            printf(", ");
+            print_ident(p, &(expr->right.var));
+            printf("\n");
             break;
 
         case MODE_BINOP_LC:
@@ -318,18 +324,8 @@ void print_op(Parser* p, SsaNode* expr)
             printf("\n");
             break;
 
-        case MODE_CONST:
-            printf("    ");
-            print_ident(p, &(expr->dest));
-            printf(" = \n");
-            break;
-
         case MODE_VAR:
-            printf("    ");
-            print_ident(p, &(expr->dest));
-            printf(" = \n");
-            break;
-
+        case MODE_CONST:
         default:
             printf("OP ????\n");
             assert(!"not implemented");
@@ -337,7 +333,6 @@ void print_op(Parser* p, SsaNode* expr)
     }
 }
 
-
 void codegen_block(Parser* p, SsaBlock* block)
 {
     /* perform a topological sort of the nodes */
index 0bd2020826ca719571b13c9485ef08043f4223cf..9b4b1cfa5713a2fdce329cd1f4133d4a52b4119f 100644 (file)
@@ -114,14 +114,23 @@ begin
   # Arithmetic ops
   c = b + 1;
   c = 1 + b;
+  c = b + b;
+
   c = b - 1;
   c = 1 - b;
+  c = b - b;
+
   c = b * 1;
   c = 1 * b;
+  c = b * b;
+
   c = b / 1;
   c = 1 / b;
+  c = b / b;
+
   c = b % 1;
   c = 1 % b;
+  c = b % b;
 
 #  # Comparison ops
 #  c = b == 1;