in bits, not bytes
This commit is contained in:
parent
cdcc1f6d3d
commit
251d24fb30
@ -31,7 +31,7 @@ static void spill2stack_visitor(AST **aptr, AST *stmt, AST *stmtPrev, AST *chunk
|
||||
|
||||
ASTExprStackPointer *rsp = calloc(1, sizeof(*rsp));
|
||||
rsp->nodeKind = AST_EXPR_STACK_POINTER;
|
||||
rsp->type = type_u(arch_gpr_size());
|
||||
rsp->type = type_u(8 * arch_gpr_size());
|
||||
|
||||
ASTExprPrimitive *offset = calloc(1, sizeof(*offset));
|
||||
offset->nodeKind = AST_EXPR_PRIMITIVE;
|
||||
|
@ -228,7 +228,7 @@ AST *nct_parse_expression(Parser *P, int lOP) {
|
||||
|
||||
ASTExprStackPointer *ret = alloc_node(P, sizeof(*ret));
|
||||
ret->nodeKind = AST_EXPR_STACK_POINTER;
|
||||
ret->type = type_u(arch_sp_size());
|
||||
ret->type = type_u(8 * arch_sp_size());
|
||||
|
||||
e = (AST*) ret;
|
||||
} else if(!strcmp(peek(P, 0).content, "@salloc")) {
|
||||
@ -255,7 +255,7 @@ AST *nct_parse_expression(Parser *P, int lOP) {
|
||||
ret->ofExpr = nct_parse_expression(P, lOP - 1);
|
||||
}
|
||||
|
||||
ret->type = type_u(arch_gpr_size());
|
||||
ret->type = type_u(8 * arch_gpr_size());
|
||||
|
||||
e = (AST*) ret;
|
||||
} else {
|
||||
@ -461,7 +461,7 @@ AST *nct_parse_expression(Parser *P, int lOP) {
|
||||
if(typesize != 1) {
|
||||
ASTExprPrimitive *scale = alloc_node(P, sizeof(*scale));
|
||||
scale->nodeKind = AST_EXPR_PRIMITIVE;
|
||||
scale->type = type_u(arch_gpr_size());
|
||||
scale->type = type_u(8 * arch_gpr_size());
|
||||
scale->val = typesize;
|
||||
|
||||
ASTExprBinaryOp *mul = alloc_node(P, sizeof(*mul));
|
||||
|
@ -82,6 +82,7 @@ void vte_precolor(ScopeItem *vte, int class, int color) {
|
||||
assert(!vte->data.var.precolored && "already precolored");
|
||||
|
||||
vte->data.var.precolored = true;
|
||||
vte->data.var.preclassed = true;
|
||||
vte->data.var.registerClass = class;
|
||||
vte->data.var.color = color;
|
||||
}
|
||||
|
@ -7,6 +7,7 @@
|
||||
#include"ast/ast.h"
|
||||
#include"reporting.h"
|
||||
#include<assert.h>
|
||||
#include"x86/arch.h"
|
||||
|
||||
#include"ntc.h"
|
||||
|
||||
|
@ -115,9 +115,9 @@ static inline bool type_is_segmented_pointer(Type *type) {
|
||||
return type->type == TYPE_TYPE_RECORD && !!strstr(type->record.name, " @far*");
|
||||
}
|
||||
|
||||
static inline Type *type_u(size_t size) {
|
||||
static inline Type *type_u(size_t bits) {
|
||||
char buf[32];
|
||||
snprintf(buf, sizeof(buf), "u%lu", size);
|
||||
snprintf(buf, sizeof(buf), "u%lu", bits);
|
||||
return primitive_parse(buf);
|
||||
}
|
||||
|
||||
|
@ -474,7 +474,7 @@ static void pre_dumb_visitor(AST **nptr, AST *stmt, AST *stmtPrev, AST *chunk, A
|
||||
|
||||
ASTExprPrimitive *offset = calloc(1, sizeof(*offset));
|
||||
offset->nodeKind = AST_EXPR_PRIMITIVE;
|
||||
offset->type = type_u(x86_max_gpr_size());
|
||||
offset->type = type_u(8 * x86_max_gpr_size());
|
||||
offset->val = 4 + i * x86_max_gpr_size();
|
||||
offset->stackGrowth = true;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user