rename arith to binary
This commit is contained in:
parent
97e8e32ebc
commit
d185396a1c
6
ir.c
6
ir.c
@ -105,10 +105,10 @@ void print_ir(IRToks *v, const BuiltinFunc *builtin_funcs) {
|
||||
case IRSub:
|
||||
case IRDiv:
|
||||
case IRMul:
|
||||
printf(" %%%zx ", v->toks[i].Arith.addr);
|
||||
print_irparam(&v->toks[i].Arith.lhs);
|
||||
printf(" %%%zx ", v->toks[i].Binary.addr);
|
||||
print_irparam(&v->toks[i].Binary.lhs);
|
||||
printf(" ");
|
||||
print_irparam(&v->toks[i].Arith.rhs);
|
||||
print_irparam(&v->toks[i].Binary.rhs);
|
||||
break;
|
||||
case IRJmp:
|
||||
printf(" %zx", v->toks[i].Jmp.iaddr);
|
||||
|
2
ir.h
2
ir.h
@ -59,7 +59,7 @@ typedef struct IRTok {
|
||||
struct {
|
||||
size_t addr;
|
||||
IRParam lhs, rhs;
|
||||
} Arith;
|
||||
} Binary;
|
||||
|
||||
struct {
|
||||
size_t iaddr;
|
||||
|
6
parse.c
6
parse.c
@ -52,7 +52,7 @@ static void set_irtok_dest_addr(IRTok *t, size_t addr) {
|
||||
case IRSub:
|
||||
case IRMul:
|
||||
case IRDiv:
|
||||
t->Arith.addr = addr;
|
||||
t->Binary.addr = addr;
|
||||
break;
|
||||
case IRCallInternal:
|
||||
t->CallI.ret_addr = addr;
|
||||
@ -436,7 +436,7 @@ static ExprRet expr(IRToks *out_ir, TokList *toks, Map *funcs, Scope *parent_sc,
|
||||
if (lhs->kind == TokVal && rhs->kind == TokVal) {
|
||||
/* evaluate the constant expression immediately */
|
||||
lhs->kind = TokVal;
|
||||
TRY_RET(lhs->Val = eval_arith(instr, &lhs->Val, &rhs->Val), (ExprRet){0});
|
||||
TRY_RET(lhs->Val = eval_binary(instr, &lhs->Val, &rhs->Val), (ExprRet){0});
|
||||
} else {
|
||||
bool is_last_operation = t == start && r_op_prec == PREC_DELIM;
|
||||
|
||||
@ -450,7 +450,7 @@ static ExprRet expr(IRToks *out_ir, TokList *toks, Map *funcs, Scope *parent_sc,
|
||||
.ln = l_op->ln,
|
||||
.col = l_op->col,
|
||||
.instr = instr,
|
||||
.Arith = {
|
||||
.Binary = {
|
||||
.addr = res_addr,
|
||||
.lhs = lhs_irparam,
|
||||
.rhs = rhs_irparam,
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
#include "util.h"
|
||||
|
||||
Value eval_arith(IRInstr instr, const Value *lhs, const Value *rhs) {
|
||||
Value eval_binary(IRInstr instr, const Value *lhs, const Value *rhs) {
|
||||
switch (instr) {
|
||||
case IRAdd:
|
||||
case IRSub:
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
#include "ir.h"
|
||||
|
||||
Value eval_arith(IRInstr instr, const Value *lhs, const Value *rhs);
|
||||
Value eval_binary(IRInstr instr, const Value *lhs, const Value *rhs);
|
||||
Value eval_unary(IRInstr instr, const Value *v);
|
||||
bool is_nonzero(const Value *v);
|
||||
Value zero_val(Type ty);
|
||||
|
8
vm.c
8
vm.c
@ -63,10 +63,10 @@ void run(const IRToks *ir, const BuiltinFunc *builtin_funcs) {
|
||||
case IRSub:
|
||||
case IRDiv:
|
||||
case IRMul:
|
||||
stack_fit(&s, instr->Arith.addr);
|
||||
TRY_ELSE(s.mem[instr->Arith.addr] = eval_arith(instr->instr,
|
||||
irparam_to_val(&s, &instr->Arith.lhs),
|
||||
irparam_to_val(&s, &instr->Arith.rhs)),
|
||||
stack_fit(&s, instr->Binary.addr);
|
||||
TRY_ELSE(s.mem[instr->Binary.addr] = eval_binary(instr->instr,
|
||||
irparam_to_val(&s, &instr->Binary.lhs),
|
||||
irparam_to_val(&s, &instr->Binary.rhs)),
|
||||
{free(fn_args); stack_term(&s);});
|
||||
break;
|
||||
case IRJmp:
|
||||
|
Loading…
Reference in New Issue
Block a user