Skip to content

Commit 796bce9

Browse files
authored
Merge pull request #37 from Bytom/inst
inst set desc
2 parents d9a0e10 + 423127d commit 796bce9

File tree

3 files changed

+408
-197
lines changed

3 files changed

+408
-197
lines changed

compiler/codegen.c

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ fix_labels(OpcodeBuf *ob)
6767
int address;
6868

6969
for (i = 0; i < ob->size; i++) {
70-
if (ob->code[i] == JUMP
71-
|| ob->code[i] == JUMPIF) {
70+
if (ob->code[i] == OP_JUMP
71+
|| ob->code[i] == OP_JUMPIF) {
7272
label = (ob->code[i+1] << 8) + (ob->code[i+2]);
7373
address = ob->label_table[label].label_address;
7474
ob->code[i+1] = (SVM_Byte)(address >> 8);
@@ -270,9 +270,9 @@ generate_boolean_expression(SVM_Executable *cf, Expression *expr,
270270
OpcodeBuf *ob)
271271
{
272272
if (expr->u.boolean_value) {
273-
generate_code(ob, TRUE, 1);
273+
generate_code(ob, OP_TRUE, 1);
274274
} else {
275-
generate_code(ob, FALSE, 0);
275+
generate_code(ob, OP_FALSE, 0);
276276
}
277277
}
278278

@@ -281,9 +281,9 @@ generate_int_expression(SVM_Executable *cf, int value,
281281
OpcodeBuf *ob)
282282
{
283283
if (value >= 0 && value < 256) {
284-
generate_code(ob, PUSHDATA1, value);
284+
generate_code(ob, OP_PUSHDATA1, value);
285285
} else if (value >= 0 && value < 65536) {
286-
generate_code(ob, PUSHDATA2, value);
286+
generate_code(ob, OP_PUSHDATA2, value);
287287
} else {
288288
// TODO: add constpool
289289
}
@@ -310,7 +310,7 @@ generate_identifier_expression(SVM_Executable *exe, Block *block,
310310
generate_identifier(expr->u.identifier, ob);
311311
break;
312312
case FUNC_DEFINITION:
313-
generate_code(ob, INVOKE);
313+
generate_code(ob, OP_INVOKE);
314314
break;
315315
case CONST_DEFINITION:
316316
generate_identifier(expr->u.identifier, ob);
@@ -395,8 +395,8 @@ generate_logical_expression(SVM_Executable *exe, Block *block,
395395

396396
true_label = get_label(ob);
397397
generate_expression(exe, block, expr->u.binary_expression->left, ob);
398-
generate_code(ob, DUP);
399-
generate_code(ob, JUMPIF, true_label);
398+
generate_code(ob, OP_DUP);
399+
generate_code(ob, OP_JUMPIF, true_label);
400400
generate_expression(exe, block, expr->u.binary_expression->right, ob);
401401
generate_code(ob, code);
402402
set_label(ob, true_label);
@@ -428,60 +428,60 @@ generate_expression(SVM_Executable *exe, Block *current_block,
428428
break;
429429
case ADD_EXPRESSION:
430430
generate_binary_expression(exe, current_block, expr,
431-
ADD, ob);
431+
OP_ADD, ob);
432432
break;
433433
case SUB_EXPRESSION:
434434
generate_binary_expression(exe, current_block, expr,
435-
SUB, ob);
435+
OP_SUB, ob);
436436
break;
437437
case MUL_EXPRESSION:
438438
generate_binary_expression(exe, current_block, expr,
439-
MUL, ob);
439+
OP_MUL, ob);
440440
break;
441441
case DIV_EXPRESSION:
442442
generate_binary_expression(exe, current_block, expr,
443-
DIV, ob);
443+
OP_DIV, ob);
444444
break;
445445
case MOD_EXPRESSION:
446446
generate_binary_expression(exe, current_block, expr,
447-
MOD, ob);
447+
OP_MOD, ob);
448448
break;
449449
case EQ_EXPRESSION:
450450
generate_binary_expression(exe, current_block, expr,
451-
EQUAL, ob);
451+
OP_EQUAL, ob);
452452
break;
453453
case NE_EXPRESSION:
454454
generate_binary_expression(exe, current_block, expr,
455-
NOTEQUAL0, ob);
455+
OP_0NOTEQUAL, ob);
456456
break;
457457
case GT_EXPRESSION:
458458
generate_binary_expression(exe, current_block, expr,
459-
GREATERTHAN, ob);
459+
OP_GREATERTHAN, ob);
460460
break;
461461
case GE_EXPRESSION:
462462
generate_binary_expression(exe, current_block, expr,
463-
GREATERTHANOREQUAL, ob);
463+
OP_GREATERTHANOREQUAL, ob);
464464
break;
465465
case LT_EXPRESSION:
466466
generate_binary_expression(exe, current_block, expr,
467-
LESSTHAN, ob);
467+
OP_LESSTHAN, ob);
468468
break;
469469
case LE_EXPRESSION:
470470
generate_binary_expression(exe, current_block, expr,
471-
LESSTHANOREQUAL, ob);
471+
OP_LESSTHANOREQUAL, ob);
472472
case MINUS_EXPRESSION:
473473
generate_expression(exe, current_block, expr->u.unary_expression, ob);
474-
generate_code(ob, NEGATE);
474+
generate_code(ob, OP_NEGATE);
475475
break;
476476
case AND_EXPRESSION:
477-
generate_logical_expression(exe, current_block, expr, ob, AND);
477+
generate_logical_expression(exe, current_block, expr, ob, OP_AND);
478478
break;
479479
case OR_EXPRESSION:
480-
generate_logical_expression(exe, current_block, expr, ob, OR);
480+
generate_logical_expression(exe, current_block, expr, ob, OP_OR);
481481
break;
482482
case NOT_EXPRESSION:
483483
generate_expression(exe, current_block, expr->u.unary_expression, ob);
484-
generate_code(ob, NOT);
484+
generate_code(ob, OP_NOT);
485485
break;
486486
default:
487487
printf("expr->kind..%d\n", expr->kind);
@@ -495,7 +495,7 @@ generate_expression_statement(SVM_Executable *exe, Block *block,
495495
OpcodeBuf *ob)
496496
{
497497
generate_expression(exe, block, expr, ob);
498-
generate_code(ob, DROP);
498+
generate_code(ob, OP_DROP);
499499
}
500500

501501
// TODO: huge swith-case

0 commit comments

Comments
 (0)