Merge pull request #69 from kernigh/kernigh-stdc
use libc assert, strcmp; declare more functions; fewer clang warnings
This commit is contained in:
commit
6d91bdbbbd
|
@ -92,8 +92,10 @@ definerule("cppfile",
|
|||
|
||||
local hdrpaths = {}
|
||||
for _, t in pairs(e.deps) do
|
||||
if t.dir then
|
||||
hdrpaths[#hdrpaths+1] = "-I"..t.dir
|
||||
end
|
||||
end
|
||||
hdrpaths = uniquify(hdrpaths)
|
||||
|
||||
return normalrule {
|
||||
|
|
|
@ -4,6 +4,9 @@
|
|||
*/
|
||||
/* $Id$ */
|
||||
|
||||
#ifndef __CGG_CG_H_INCLUDED
|
||||
#define __CGG_CG_H_INCLUDED
|
||||
|
||||
/* offsets of interesting fields in EM-pattern */
|
||||
|
||||
#define PO_HASH 0
|
||||
|
@ -165,3 +168,5 @@ typedef struct { /* one to one coercions */
|
|||
if ((a=((*(b)++)&BMASK)) >= 128) {\
|
||||
a = ((a-128)<<BSHIFT) | (*(b)++&BMASK); \
|
||||
}
|
||||
|
||||
#endif /* __CGG_CG_H_INCLUDED */
|
||||
|
|
|
@ -237,6 +237,7 @@ float_cst(str, sz, buf)
|
|||
#endif /* USE_FLT */
|
||||
|
||||
#ifdef CODE_GENERATOR
|
||||
void
|
||||
con_float()
|
||||
{
|
||||
char buf[8];
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
/* $Id$ */
|
||||
/* L E X I C A L A N A L Y Z E R */
|
||||
|
||||
#include <assert.h>
|
||||
#include <alloc.h>
|
||||
#include "parameters.h"
|
||||
#include "input.h"
|
||||
|
@ -15,7 +16,6 @@
|
|||
#include "LLlex.h"
|
||||
#include "Lpars.h"
|
||||
#include "class.h"
|
||||
#include "assert.h"
|
||||
#include "sizes.h"
|
||||
#include "specials.h" /* registration of special identifiers */
|
||||
|
||||
|
@ -61,15 +61,15 @@ void skipcomment();
|
|||
*/
|
||||
PushLex()
|
||||
{
|
||||
ASSERT(LexSP < MAX_LL_DEPTH);
|
||||
ASSERT(ASIDE == 0); /* ASIDE = 0; */
|
||||
assert(LexSP < MAX_LL_DEPTH);
|
||||
assert(ASIDE == 0); /* ASIDE = 0; */
|
||||
GetToken(&ahead);
|
||||
LexStack[LexSP++] = dot;
|
||||
}
|
||||
|
||||
PopLex()
|
||||
{
|
||||
ASSERT(LexSP > 0);
|
||||
assert(LexSP > 0);
|
||||
dot = LexStack[--LexSP];
|
||||
}
|
||||
#endif /* NOPP */
|
||||
|
@ -765,7 +765,7 @@ struct token *ptok;
|
|||
int uns_flg = 0, lng_flg = 0, malformed = 0, ovfl = 0;
|
||||
int fund;
|
||||
|
||||
ASSERT(*cp != '-');
|
||||
assert(*cp != '-');
|
||||
if (*cp == '0') {
|
||||
cp++;
|
||||
if (*cp == 'x' || *cp == 'X') {
|
||||
|
@ -828,7 +828,7 @@ struct token *ptok;
|
|||
if (val >= 0) fund = LONG;
|
||||
else fund = ULONG;
|
||||
} else { /* sizeof(arith) is greater than long_size */
|
||||
ASSERT(arith_size > long_size);
|
||||
assert(arith_size > long_size);
|
||||
lexwarning("constant too large for target machine");
|
||||
/* cut the size to prevent further complaints */
|
||||
val &= full_mask[(int)long_size];
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
semantics of C is a mess.
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
#include "parameters.h"
|
||||
#include <alloc.h>
|
||||
#include <flt_arith.h>
|
||||
|
@ -23,7 +24,6 @@
|
|||
#include "Lpars.h"
|
||||
#include "field.h"
|
||||
#include "mes.h"
|
||||
#include "assert.h"
|
||||
|
||||
extern char *symbol2str();
|
||||
extern char options[];
|
||||
|
@ -250,7 +250,7 @@ any2arith(expp, oper)
|
|||
switch (fund = (*expp)->ex_type->tp_fund) {
|
||||
case CHAR:
|
||||
case SHORT:
|
||||
ASSERT((*expp)->ex_type->tp_size <= int_type->tp_size);
|
||||
assert((*expp)->ex_type->tp_size <= int_type->tp_size);
|
||||
|
||||
if ((*expp)->ex_type->tp_unsigned
|
||||
&& (*expp)->ex_type->tp_size == int_type->tp_size) {
|
||||
|
|
|
@ -1,26 +0,0 @@
|
|||
/*
|
||||
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||
|
||||
* See the copyright notice in the ACK home directory, in the file "Copyright".
|
||||
*/
|
||||
/* $Id$ */
|
||||
/* A S S E R T I O N M A C R O D E F I N I T I O N */
|
||||
|
||||
/* At some points in the program, it must be sure that some condition
|
||||
holds true, due to further, successful, processing. As long as
|
||||
there is no reasonable method to prove that a program is 100%
|
||||
correct, these assertions are needed in some places.
|
||||
*/
|
||||
|
||||
#include "parameters.h"
|
||||
|
||||
#ifdef DEBUG
|
||||
/* Note: this macro uses parameter substitution inside strings */
|
||||
#define ASSERT(exp) (exp || crash("in %s, %u: assertion %s failed", \
|
||||
__FILE__, __LINE__, "exp"))
|
||||
#define NOTREACHED() crash("in %s, %u: unreachable statement reached", \
|
||||
__FILE__, __LINE__)
|
||||
#else
|
||||
#define ASSERT(exp)
|
||||
#define NOTREACHED()
|
||||
#endif /* DEBUG */
|
|
@ -138,7 +138,12 @@ cprogram {
|
|||
matching(filenamesof("+llgen"), "%.c$"),
|
||||
},
|
||||
deps = {
|
||||
"./*.h",
|
||||
"./LLlex.h", "./align.h", "./arith.h", "./atw.h",
|
||||
"./class.h", "./decspecs.h", "./file_info.h",
|
||||
"./input.h", "./interface.h", "./l_class.h",
|
||||
"./l_comment.h", "./l_em.h", "./l_lint.h",
|
||||
"./label.h", "./level.h", "./mes.h", "./sizes.h",
|
||||
"./specials.h", "./tokenname.h",
|
||||
"+llgen",
|
||||
"+nextlib",
|
||||
"+parameters",
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
/* $Id$ */
|
||||
/* S E M A N T I C A N A L Y S I S -- C H A P T E R 3.3 */
|
||||
|
||||
#include <assert.h>
|
||||
#include "parameters.h"
|
||||
#include <flt_arith.h>
|
||||
#include "arith.h"
|
||||
|
@ -16,7 +17,6 @@
|
|||
#include "expr.h"
|
||||
#include "def.h"
|
||||
#include "Lpars.h"
|
||||
#include "assert.h"
|
||||
#include "file_info.h"
|
||||
|
||||
extern char options[];
|
||||
|
@ -119,7 +119,7 @@ ch3sel(expp, oper, idf)
|
|||
struct oper *op = &(exp->ex_object.ex_oper);
|
||||
|
||||
if (op->op_oper == '.' || op->op_oper == ARROW) {
|
||||
ASSERT(is_cp_cst(op->op_right));
|
||||
assert(is_cp_cst(op->op_right));
|
||||
op->op_right->VL_VALUE += sd->sd_offset;
|
||||
exp->ex_type = sd->sd_type;
|
||||
exp->ex_lvalue = exp->ex_type->tp_fund != ARRAY;
|
||||
|
@ -528,7 +528,7 @@ legal_mixture(tp, otp, diag)
|
|||
register struct proto *prot;
|
||||
int fund;
|
||||
|
||||
ASSERT( (pl != 0) ^ (opl != 0));
|
||||
assert( (pl != 0) ^ (opl != 0));
|
||||
if (pl) {
|
||||
prot = pl;
|
||||
} else {
|
||||
|
@ -592,7 +592,7 @@ int qual;
|
|||
{
|
||||
register struct sdef *sdf;
|
||||
|
||||
ASSERT(tp);
|
||||
assert(tp);
|
||||
|
||||
if (tp->tp_typequal & qual) return 1;
|
||||
switch(tp->tp_fund) {
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
/* $Id$ */
|
||||
/* C O D E - G E N E R A T I N G R O U T I N E S */
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "parameters.h"
|
||||
|
@ -32,7 +33,6 @@
|
|||
#include "Lpars.h"
|
||||
#include "specials.h"
|
||||
#include "atw.h"
|
||||
#include "assert.h"
|
||||
#include "LLlex.h"
|
||||
#include "align.h"
|
||||
#ifdef LINT
|
||||
|
@ -545,7 +545,7 @@ loc_init(expr, id)
|
|||
static arith tmpoffset = 0;
|
||||
static arith unknownsize = 0;
|
||||
|
||||
ASSERT(df->df_sc != STATIC);
|
||||
assert(df->df_sc != STATIC);
|
||||
switch (tp->tp_fund) {
|
||||
case ARRAY:
|
||||
if (tp->tp_size == (arith) -1)
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
/* $Id$ */
|
||||
/* C O N S T A N T E X P R E S S I O N H A N D L I N G */
|
||||
|
||||
#include <assert.h>
|
||||
#include "parameters.h"
|
||||
#include <flt_arith.h>
|
||||
#include "arith.h"
|
||||
|
@ -13,7 +14,6 @@
|
|||
#include "expr.h"
|
||||
#include "sizes.h"
|
||||
#include "Lpars.h"
|
||||
#include "assert.h"
|
||||
|
||||
/* full_mask[1] == 0XFF, full_mask[2] == 0XFFFF, .. */
|
||||
arith full_mask[MAXSIZE + 1];
|
||||
|
@ -34,7 +34,7 @@ cstbin(expp, oper, expr)
|
|||
register arith o2 = expr->VL_VALUE;
|
||||
int uns = (*expp)->ex_type->tp_unsigned;
|
||||
|
||||
ASSERT(is_ld_cst(*expp) && is_cp_cst(expr));
|
||||
assert(is_ld_cst(*expp) && is_cp_cst(expr));
|
||||
switch (oper) {
|
||||
case '*':
|
||||
o1 *= o2;
|
||||
|
@ -144,7 +144,7 @@ cut_size(expr)
|
|||
int uns = expr->ex_type->tp_unsigned;
|
||||
int size = (int) expr->ex_type->tp_size;
|
||||
|
||||
ASSERT(expr->ex_class == Value);
|
||||
assert(expr->ex_class == Value);
|
||||
if (expr->ex_type->tp_fund == POINTER) {
|
||||
/* why warn on "ptr-3" ?
|
||||
This quick hack fixes it
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
/* $Id$ */
|
||||
/* D E C L A R A T I O N S P E C I F I E R C H E C K I N G */
|
||||
|
||||
#include "assert.h"
|
||||
#include <assert.h>
|
||||
#include "Lpars.h"
|
||||
#include "decspecs.h"
|
||||
#include "arith.h"
|
||||
|
@ -28,7 +28,7 @@ do_decspecs(ds)
|
|||
*/
|
||||
register struct type *tp = ds->ds_type;
|
||||
|
||||
ASSERT(level != L_FORMAL1);
|
||||
assert(level != L_FORMAL1);
|
||||
|
||||
if ( level == L_GLOBAL &&
|
||||
(ds->ds_sc == AUTO || ds->ds_sc == REGISTER)
|
||||
|
|
|
@ -5,7 +5,9 @@
|
|||
/* $Id$ */
|
||||
/* PREPROCESSOR: CONTROLLINE INTERPRETER */
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "parameters.h"
|
||||
#include "idf.h"
|
||||
#include "arith.h"
|
||||
|
@ -15,7 +17,6 @@
|
|||
#include "replace.h"
|
||||
|
||||
#ifndef NOPP
|
||||
#include "assert.h"
|
||||
#include <alloc.h>
|
||||
#include "class.h"
|
||||
#include "macro.h"
|
||||
|
@ -263,7 +264,7 @@ int to_endif;
|
|||
else SkipToNewLine();
|
||||
break;
|
||||
case K_ENDIF:
|
||||
ASSERT(nestlevel > nestlow);
|
||||
assert(nestlevel > nestlow);
|
||||
if (nestlevel == skiplevel) {
|
||||
if (SkipToNewLine()) {
|
||||
if (!options['o'])
|
||||
|
@ -383,7 +384,7 @@ do_define()
|
|||
}
|
||||
/* read the replacement text if there is any */
|
||||
ch = skipspaces(ch,0); /* find first character of the text */
|
||||
ASSERT(ch != EOI);
|
||||
assert(ch != EOI);
|
||||
/* UnGetChar() is not right when replacement starts with a '/' */
|
||||
ChPushBack(ch);
|
||||
repl_text = get_text((nformals > 0) ? formals : 0, &length);
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
#ifdef DEBUG
|
||||
#include "parameters.h"
|
||||
#include <ack_string.h>
|
||||
#include <alloc.h>
|
||||
#include <flt_arith.h>
|
||||
#include "arith.h"
|
||||
|
@ -455,8 +456,6 @@ p1_expr(lvl, expr)
|
|||
break;
|
||||
case String:
|
||||
{
|
||||
char *bts2str();
|
||||
|
||||
print(
|
||||
"\"%s\"\n",
|
||||
bts2str(expr->SG_VALUE, expr->SG_LEN-1,
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
#include "parameters.h"
|
||||
#ifndef LINT
|
||||
|
||||
#include <assert.h>
|
||||
#include <ack_string.h>
|
||||
#include <em.h>
|
||||
#include <em_reg.h>
|
||||
#include <alloc.h>
|
||||
|
@ -17,7 +19,6 @@
|
|||
#include "type.h"
|
||||
#include "label.h"
|
||||
#include "code.h"
|
||||
#include "assert.h"
|
||||
#include "def.h"
|
||||
#include "expr.h"
|
||||
#include "sizes.h"
|
||||
|
@ -32,7 +33,6 @@
|
|||
#define CRASH() crash("EVAL: CRASH at line %u", __LINE__)
|
||||
|
||||
char *symbol2str();
|
||||
char *long2str();
|
||||
arith NewLocal(); /* util.c */
|
||||
#define LocalPtrVar() NewLocal(pointer_size, pointer_align, reg_pointer, REGISTER)
|
||||
extern int err_occurred; /* error.c */
|
||||
|
@ -83,7 +83,7 @@ EVAL(expr, val, code, true_label, false_label)
|
|||
/* can only result from ','-expressions with
|
||||
constant right-hand sides ???
|
||||
*/
|
||||
ASSERT(is_cp_cst(expr));
|
||||
assert(is_cp_cst(expr));
|
||||
C_bra(expr->VL_VALUE == 0 ? false_label : true_label);
|
||||
}
|
||||
else load_val(expr, val);
|
||||
|
@ -254,7 +254,7 @@ EVAL(expr, val, code, true_label, false_label)
|
|||
break;
|
||||
case '%':
|
||||
operands(expr, gencode);
|
||||
ASSERT(tp->tp_fund==INT || tp->tp_fund==LONG);
|
||||
assert(tp->tp_fund==INT || tp->tp_fund==LONG);
|
||||
if (gencode)
|
||||
if (tp->tp_unsigned)
|
||||
C_rmu(tp->tp_size);
|
||||
|
@ -554,7 +554,7 @@ EVAL(expr, val, code, true_label, false_label)
|
|||
fp_used = 1;
|
||||
EVAL(left, oper == '.' ? LVAL : RVAL, gencode,
|
||||
NO_LABEL, NO_LABEL);
|
||||
ASSERT(is_cp_cst(right));
|
||||
assert(is_cp_cst(right));
|
||||
if (gencode) {
|
||||
C_adp(right->VL_VALUE);
|
||||
}
|
||||
|
@ -877,7 +877,7 @@ store_val(vl, tp)
|
|||
}
|
||||
}
|
||||
else {
|
||||
ASSERT(df->df_sc != STATIC);
|
||||
assert(df->df_sc != STATIC);
|
||||
if (inword || indword)
|
||||
StoreLocal(df->df_address + val, tp->tp_size);
|
||||
else {
|
||||
|
@ -889,7 +889,7 @@ store_val(vl, tp)
|
|||
else {
|
||||
label dlb = vl->vl_data.vl_lbl;
|
||||
|
||||
ASSERT(vl->vl_class == Label);
|
||||
assert(vl->vl_class == Label);
|
||||
if (inword)
|
||||
C_ste_dlb(dlb, val);
|
||||
else
|
||||
|
@ -964,12 +964,12 @@ load_val(expr, rlval)
|
|||
register struct def *df = id->id_def;
|
||||
int fund = df->df_type->tp_fund;
|
||||
|
||||
ASSERT(ISNAME(expr));
|
||||
assert(ISNAME(expr));
|
||||
if (fund == FUNCTION) {
|
||||
/* the previous statement tried to catch a function
|
||||
identifier, which may be cast to a pointer to a
|
||||
function.
|
||||
ASSERT(!(rvalue)); ???
|
||||
assert(!(rvalue)); ???
|
||||
*/
|
||||
C_lpi(id->id_text);
|
||||
}
|
||||
|
@ -995,7 +995,7 @@ load_val(expr, rlval)
|
|||
}
|
||||
}
|
||||
else {
|
||||
/* ASSERT(df->df_sc != STATIC); */
|
||||
/* assert(df->df_sc != STATIC); */
|
||||
if (rvalue) {
|
||||
if (inword || indword)
|
||||
LoadLocal(df->df_address + val, tp->tp_size);
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
/* $Id$ */
|
||||
/* EXPRESSION TREE HANDLING */
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include "parameters.h"
|
||||
#include "assert.h"
|
||||
#include <alloc.h>
|
||||
#include <flt_arith.h>
|
||||
#include "idf.h"
|
||||
|
@ -251,7 +251,7 @@ float2expr(expr)
|
|||
expr->ex_class = Float;
|
||||
flt_str2flt(dot.tk_fval, &(expr->FL_ARITH));
|
||||
free(dot.tk_fval);
|
||||
ASSERT(flt_status != FLT_NOFLT);
|
||||
assert(flt_status != FLT_NOFLT);
|
||||
if (flt_status == FLT_OVFL)
|
||||
expr_warning(expr,"internal floating point overflow");
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
|
||||
#ifndef NOBITFIELD
|
||||
#include <assert.h>
|
||||
#include <em.h>
|
||||
#include <em_reg.h>
|
||||
#include <flt_arith.h>
|
||||
|
@ -17,7 +18,6 @@
|
|||
#include "type.h"
|
||||
#include "label.h"
|
||||
#include "code.h"
|
||||
#include "assert.h"
|
||||
#include "expr.h"
|
||||
#include "sizes.h"
|
||||
#include "align.h"
|
||||
|
@ -55,12 +55,12 @@ eval_field(expr, code)
|
|||
: word_type;
|
||||
|
||||
/* First some assertions to be sure that the rest is legal */
|
||||
ASSERT(atype->tp_size == word_size); /* make sure that C_loc() is legal */
|
||||
ASSERT(leftop->ex_type->tp_fund == FIELD);
|
||||
assert(atype->tp_size == word_size); /* make sure that C_loc() is legal */
|
||||
assert(leftop->ex_type->tp_fund == FIELD);
|
||||
leftop->ex_type = atype; /* this is cheating but it works... */
|
||||
if (op == '=') {
|
||||
/* F = E: f = ((E & mask)<<shift) | (~(mask<<shift) & f) */
|
||||
ASSERT(tp == rightop->ex_type);
|
||||
assert(tp == rightop->ex_type);
|
||||
EVAL(rightop, RVAL, TRUE, NO_LABEL, NO_LABEL);
|
||||
conversion(tp, atype);
|
||||
store_field(fd, tp->tp_unsigned, code, leftop, (arith) 0);
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
/* C O N S T A N T E X P R E S S I O N H A N D L I N G */
|
||||
/* F O R F L O A T I N G P O I N T N U M B E R S */
|
||||
|
||||
#include <assert.h>
|
||||
#include "parameters.h"
|
||||
#include "assert.h"
|
||||
#include <alloc.h>
|
||||
#include <flt_arith.h>
|
||||
#include "arith.h"
|
||||
|
@ -34,7 +34,7 @@ fltcstbin(expp, oper, expr)
|
|||
o1 = (*expp)->FL_ARITH;
|
||||
o2 = expr->FL_ARITH;
|
||||
|
||||
ASSERT(is_fp_cst(*expp) && is_fp_cst(expr));
|
||||
assert(is_fp_cst(*expp) && is_fp_cst(expr));
|
||||
switch (oper) {
|
||||
case '*':
|
||||
flt_mul(&o1, &o2, &o1);
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
/* $Id$ */
|
||||
/* IDENTIFIER FIDDLING & SYMBOL TABLE HANDLING */
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "parameters.h"
|
||||
|
@ -25,7 +26,6 @@
|
|||
#include "decspecs.h"
|
||||
#include "sizes.h"
|
||||
#include "Lpars.h"
|
||||
#include "assert.h"
|
||||
|
||||
extern char options[];
|
||||
extern arith NewLocal();
|
||||
|
@ -88,7 +88,7 @@ declare_idf(ds, dc, lvl)
|
|||
if (ds->ds_type == 0) {
|
||||
/* at the L_FORMAL1 level there is no type specified yet
|
||||
*/
|
||||
ASSERT(lvl == L_FORMAL1);
|
||||
assert(lvl == L_FORMAL1);
|
||||
type = int_type; /* may change at L_FORMAL2 */
|
||||
}
|
||||
else {
|
||||
|
@ -224,7 +224,7 @@ declare_idf(ds, dc, lvl)
|
|||
So here we hand out local addresses only.
|
||||
*/
|
||||
if (lvl >= L_LOCAL) {
|
||||
ASSERT(sc);
|
||||
assert(sc);
|
||||
switch (sc) {
|
||||
case REGISTER:
|
||||
case AUTO:
|
||||
|
@ -380,7 +380,7 @@ good_formal(def, idf)
|
|||
error("%s not in parameter list", idf->id_text);
|
||||
return 0;
|
||||
}
|
||||
ASSERT(def->df_sc == FORMAL); /* CJ */
|
||||
assert(def->df_sc == FORMAL); /* CJ */
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -6,3 +6,11 @@
|
|||
#define PRIVATE static /* or not */
|
||||
#define IMPORT extern
|
||||
#define EXPORT
|
||||
|
||||
/* Here to avoid creating another header "notreached.h" */
|
||||
#ifndef NDEBUG
|
||||
#define NOTREACHED() crash("in %s, %u: unreachable statement reached", \
|
||||
__FILE__, __LINE__)
|
||||
#else
|
||||
#define NOTREACHED()
|
||||
#endif /* NDEBUG */
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
/* CODE FOR THE INITIALISATION OF GLOBAL VARIABLES */
|
||||
|
||||
{
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include "parameters.h"
|
||||
#ifndef LINT
|
||||
|
@ -14,6 +15,7 @@
|
|||
#include "l_em.h"
|
||||
#include "l_lint.h"
|
||||
#endif /* LINT */
|
||||
#include <ack_string.h>
|
||||
#include <alloc.h>
|
||||
#include <assert.h>
|
||||
#include <flt_arith.h>
|
||||
|
@ -25,7 +27,6 @@
|
|||
#include "proto.h"
|
||||
#include "struct.h"
|
||||
#include "field.h"
|
||||
#include "assert.h"
|
||||
#include "Lpars.h"
|
||||
#include "sizes.h"
|
||||
#include "align.h"
|
||||
|
@ -38,7 +39,6 @@
|
|||
#define con_nullbyte() C_con_ucon("0", (arith)1)
|
||||
#define aggregate_type(tp) ((tp)->tp_fund == ARRAY || (tp)->tp_fund == STRUCT)
|
||||
|
||||
char *long2str();
|
||||
char *strncpy();
|
||||
extern char options[];
|
||||
static int gen_error;
|
||||
|
@ -548,7 +548,7 @@ check_ival(expp, tp)
|
|||
C_con_dnam(idf->id_text, expr->VL_VALUE);
|
||||
}
|
||||
else {
|
||||
ASSERT(expr->VL_CLASS == Label);
|
||||
assert(expr->VL_CLASS == Label);
|
||||
C_con_dlb(expr->VL_LBL, expr->VL_VALUE);
|
||||
}
|
||||
break;
|
||||
|
@ -625,7 +625,7 @@ ch_array(tpp, ex)
|
|||
register int length = ex->SG_LEN, i;
|
||||
register char *to, *from, *s;
|
||||
|
||||
ASSERT(ex->ex_class == String);
|
||||
assert(ex->ex_class == String);
|
||||
if (tp->tp_size == (arith)-1) {
|
||||
/* set the dimension */
|
||||
tp = *tpp = construct_type(ARRAY, tp->tp_up, 0, (arith)length, NO_PROTO);
|
||||
|
@ -696,7 +696,7 @@ put_bf(tp, val)
|
|||
register struct sdef *sd = fd->fd_sdef;
|
||||
static struct expr exp;
|
||||
|
||||
ASSERT(sd);
|
||||
assert(sd);
|
||||
if (offset == (arith)-1) {
|
||||
/* first bitfield in this field */
|
||||
offset = sd->sd_offset;
|
||||
|
@ -737,7 +737,7 @@ valid_type(tp, str)
|
|||
struct type *tp;
|
||||
char *str;
|
||||
{
|
||||
ASSERT(tp!=(struct type *)0);
|
||||
assert(tp!=(struct type *)0);
|
||||
if (tp->tp_size < 0) {
|
||||
error("size of %s unknown", str);
|
||||
return 0;
|
||||
|
@ -750,7 +750,7 @@ con_int(ex)
|
|||
{
|
||||
register struct type *tp = ex->ex_type;
|
||||
|
||||
ASSERT(is_cp_cst(ex));
|
||||
assert(is_cp_cst(ex));
|
||||
if (tp->tp_unsigned)
|
||||
C_con_ucon(long2str((long)ex->VL_VALUE, -10), tp->tp_size);
|
||||
else if (tp->tp_size == word_size)
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
|
||||
#include <alloc.h> /* for st_free */
|
||||
#include "interface.h"
|
||||
#include "assert.h"
|
||||
#ifdef ANSI
|
||||
#include <flt_arith.h>
|
||||
#endif /* ANSI */
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
|
||||
#ifdef LINT
|
||||
|
||||
#include <assert.h>
|
||||
#include <alloc.h> /* for st_free */
|
||||
#include "interface.h"
|
||||
#include "assert.h"
|
||||
#ifdef ANSI
|
||||
#include <flt_arith.h>
|
||||
#endif /* ANSI */
|
||||
|
@ -365,7 +365,7 @@ add_expr_state(value, to_state, espp)
|
|||
{
|
||||
register struct expr_state *esp = *espp;
|
||||
|
||||
ASSERT(value.vl_class == Name);
|
||||
assert(value.vl_class == Name);
|
||||
|
||||
/* try to find the esp */
|
||||
while ( esp
|
||||
|
|
|
@ -9,13 +9,14 @@
|
|||
|
||||
#ifdef LINT
|
||||
|
||||
#include <assert.h>
|
||||
#include <ack_string.h>
|
||||
#include <alloc.h>
|
||||
#include "interface.h"
|
||||
#ifdef ANSI
|
||||
#include <flt_arith.h>
|
||||
#endif /* ANSI */
|
||||
#include "arith.h"
|
||||
#include "assert.h"
|
||||
#include "type.h"
|
||||
#include "proto.h"
|
||||
#include "declar.h"
|
||||
|
@ -35,7 +36,6 @@
|
|||
#include "l_outdef.h"
|
||||
#include "l_class.h"
|
||||
|
||||
extern char *bts2str();
|
||||
extern char *symbol2str();
|
||||
|
||||
int stat_number = 9999; /* static scope number */
|
||||
|
@ -384,7 +384,7 @@ outargs(arg, n)
|
|||
register struct argument *tmp;
|
||||
|
||||
while (n--) {
|
||||
ASSERT(arg);
|
||||
assert(arg);
|
||||
outarg(arg);
|
||||
tmp = arg;
|
||||
arg = arg->next;
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
|
||||
#ifdef LINT
|
||||
|
||||
#include <assert.h>
|
||||
#include <alloc.h> /* for st_free */
|
||||
#include "interface.h"
|
||||
#include "assert.h"
|
||||
#ifdef ANSI
|
||||
#include <flt_arith.h>
|
||||
#endif /* ANSI */
|
||||
|
@ -179,7 +179,7 @@ lint_end_global(stl)
|
|||
register struct stack_entry *se = stl->sl_entry;
|
||||
|
||||
dbg_lint_stack("lint_end_global");
|
||||
ASSERT(level == L_GLOBAL);
|
||||
assert(level == L_GLOBAL);
|
||||
while (se) {
|
||||
register struct idf *idf = se->se_idf;
|
||||
register struct def *def = idf->id_def;
|
||||
|
@ -275,7 +275,7 @@ change_state(idf, to_state)
|
|||
register struct def *def = idf->id_def;
|
||||
register struct auto_def *a = top_ls->ls_current->st_auto_list;
|
||||
|
||||
ASSERT(def);
|
||||
assert(def);
|
||||
|
||||
switch (to_state) {
|
||||
case SET:
|
||||
|
@ -300,7 +300,7 @@ change_state(idf, to_state)
|
|||
while (br && br->br_count > def->df_firstbrace) {
|
||||
br = br->next;
|
||||
}
|
||||
ASSERT(br && def->df_minlevel >= br->br_level);
|
||||
assert(br && def->df_minlevel >= br->br_level);
|
||||
def->df_minlevel = br->br_level;
|
||||
}
|
||||
|
||||
|
@ -340,7 +340,7 @@ add_auto(idf) /* to current state on top of lint_stack */
|
|||
*/
|
||||
register struct def *def = idf->id_def;
|
||||
|
||||
ASSERT(def);
|
||||
assert(def);
|
||||
|
||||
switch (def->df_sc) {
|
||||
register struct auto_def *a;
|
||||
|
@ -369,7 +369,7 @@ check_autos()
|
|||
*/
|
||||
register struct auto_def *a = top_ls->ls_current->st_auto_list;
|
||||
|
||||
ASSERT(!(a && a->ad_def->df_level > level));
|
||||
assert(!(a && a->ad_def->df_level > level));
|
||||
while (a && a->ad_def->df_level == level) {
|
||||
struct idf *idf = a->ad_idf;
|
||||
struct def *def = idf->id_def;
|
||||
|
@ -401,7 +401,7 @@ lint_end_formals()
|
|||
register struct stack_entry *se = local_level->sl_entry;
|
||||
|
||||
dbg_lint_stack("lint_end_formals");
|
||||
ASSERT(level == L_FORMAL1);
|
||||
assert(level == L_FORMAL1);
|
||||
while (se) {
|
||||
register struct def *def = se->se_idf->id_def;
|
||||
|
||||
|
@ -581,10 +581,10 @@ merge_autos(a1, a2, lvl, mode)
|
|||
|
||||
a = a2; /* pointer to the result */
|
||||
while (a1) {
|
||||
ASSERT(a2);
|
||||
assert(a2);
|
||||
|
||||
/* merge the auto_defs for one idf */
|
||||
ASSERT(a1->ad_idf == a2->ad_idf);
|
||||
assert(a1->ad_idf == a2->ad_idf);
|
||||
if (a1->ad_used)
|
||||
a2->ad_used = 1;
|
||||
|
||||
|
@ -605,7 +605,7 @@ merge_autos(a1, a2, lvl, mode)
|
|||
a1 = a1->next;
|
||||
a2 = a2->next;
|
||||
}
|
||||
ASSERT(!a2);
|
||||
assert(!a2);
|
||||
return a;
|
||||
}
|
||||
|
||||
|
@ -806,7 +806,7 @@ end_loop_body()
|
|||
register struct lint_stack_entry *lse = find_wdf();
|
||||
|
||||
dbg_lint_stack("end_loop_body");
|
||||
ASSERT(lse == top_ls);
|
||||
assert(lse == top_ls);
|
||||
if (!lse->ls_current->st_notreached)
|
||||
cont_merge(lse);
|
||||
}
|
||||
|
@ -816,7 +816,7 @@ end_loop_stmt()
|
|||
register struct lint_stack_entry *lse = find_wdf();
|
||||
|
||||
dbg_lint_stack("end_loop_stmt");
|
||||
ASSERT(lse == top_ls);
|
||||
assert(lse == top_ls);
|
||||
if (lse->LS_TEST != TEST_TRUE)
|
||||
break_merge(lse);
|
||||
|
||||
|
@ -958,7 +958,7 @@ lint_case_stmt(dflt)
|
|||
break;
|
||||
|
||||
case CASE:
|
||||
ASSERT(top_ls->ls_previous->ls_class == SWITCH);
|
||||
assert(top_ls->ls_previous->ls_class == SWITCH);
|
||||
if (dflt) {
|
||||
cs_entry->ls_previous->LS_DEFAULT_MET = 1;
|
||||
}
|
||||
|
@ -1079,7 +1079,7 @@ lint_end_function()
|
|||
* These auto_defs must be freed and the state must be filled
|
||||
* with zeros.
|
||||
*/
|
||||
ASSERT(!top_ls->ls_previous);
|
||||
assert(!top_ls->ls_previous);
|
||||
free_auto_list(top_ls->ls_current->st_auto_list);
|
||||
top_ls->ls_current->st_auto_list = 0;
|
||||
top_ls->ls_current->st_notreached = 0;
|
||||
|
|
|
@ -5,7 +5,9 @@
|
|||
/* $Id$ */
|
||||
/* MAIN PROGRAM */
|
||||
|
||||
#include <string.h>
|
||||
#include "parameters.h"
|
||||
#include <ack_string.h>
|
||||
#include <system.h>
|
||||
#include "idf.h"
|
||||
#include "input.h"
|
||||
|
@ -22,7 +24,6 @@
|
|||
#include "sizes.h"
|
||||
#include "align.h"
|
||||
#include "macro.h"
|
||||
#include "assert.h"
|
||||
|
||||
extern struct tokenname tkidf[];
|
||||
extern char *symbol2str();
|
||||
|
@ -443,7 +444,6 @@ preprocess()
|
|||
case STRING:
|
||||
{
|
||||
char sbuf[1024]; /* a transient buffer */
|
||||
char *bts2str();
|
||||
|
||||
print("\"%s\" ", bts2str(dot.tk_bts, dot.tk_len -
|
||||
1, sbuf));
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
/* $Id$ */
|
||||
/* P R O T O T Y P E F I D D L I N G */
|
||||
|
||||
#include <assert.h>
|
||||
#include "parameters.h"
|
||||
#include <alloc.h>
|
||||
#include "idf.h"
|
||||
|
@ -22,7 +23,6 @@
|
|||
#include "declar.h"
|
||||
#include "decspecs.h"
|
||||
#include "proto.h"
|
||||
#include "assert.h"
|
||||
|
||||
extern char options[];
|
||||
|
||||
|
@ -65,7 +65,7 @@ add_proto(pl, ds, dc, lvl)
|
|||
register struct type *type;
|
||||
char formal_array = 0;
|
||||
|
||||
ASSERT(ds->ds_type != (struct type *)0);
|
||||
assert(ds->ds_type != (struct type *)0);
|
||||
|
||||
pl->pl_flag = PL_FORMAL;
|
||||
type = declare_type(ds->ds_type, dc);
|
||||
|
|
|
@ -5,12 +5,14 @@
|
|||
/* $Id$ */
|
||||
/* M A C R O R E P L A C E M E N T */
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "parameters.h"
|
||||
|
||||
#ifndef NOPP
|
||||
|
||||
#include <ack_string.h>
|
||||
#include <alloc.h>
|
||||
#include "idf.h"
|
||||
#include "input.h"
|
||||
|
@ -18,7 +20,6 @@
|
|||
#include "arith.h"
|
||||
#include "LLlex.h"
|
||||
#include "class.h"
|
||||
#include "assert.h"
|
||||
#include "replace.h"
|
||||
|
||||
extern struct idf *GetIdentifier();
|
||||
|
@ -85,7 +86,7 @@ EnableMacros()
|
|||
{
|
||||
register struct repl *r = ReplaceList, *prev = 0;
|
||||
|
||||
ASSERT(Unstacked > 0);
|
||||
assert(Unstacked > 0);
|
||||
while(r) {
|
||||
struct repl *nxt = r->next;
|
||||
|
||||
|
@ -131,7 +132,7 @@ expand_macro(repl, idf)
|
|||
if (mac->mc_nps != -1) { /* with parameter list */
|
||||
if (mac->mc_flag & FUNC) {
|
||||
/* the following assertion won't compile:
|
||||
ASSERT(!strcmp("defined", idf->id_text));
|
||||
assert(!strcmp("defined", idf->id_text));
|
||||
expand the assert macro by hand (??? dirty, temporary)
|
||||
*/
|
||||
#ifdef DEBUG
|
||||
|
@ -199,7 +200,7 @@ expand_defined(repl)
|
|||
}
|
||||
ChPushBack(ch);
|
||||
id = GetIdentifier(0);
|
||||
ASSERT(id || class(ch) == STELL);
|
||||
assert(id || class(ch) == STELL);
|
||||
ch = GetChar();
|
||||
ch = skipspaces(ch, 0);
|
||||
if (parens && ch != ')') error(") missing");
|
||||
|
@ -514,7 +515,6 @@ macro_func(idef)
|
|||
*/
|
||||
register struct macro *mac = idef->id_macro;
|
||||
static char FilNamBuf[PATHLENGTH];
|
||||
char *long2str();
|
||||
|
||||
switch (idef->id_text[2]) {
|
||||
case 'F': /* __FILE__ */
|
||||
|
@ -571,7 +571,7 @@ macro2buffer(repl, idf, args)
|
|||
int func = idf->id_macro->mc_nps != -1;
|
||||
char *stringify();
|
||||
|
||||
ASSERT(ptr[idf->id_macro->mc_length] == '\0');
|
||||
assert(ptr[idf->id_macro->mc_length] == '\0');
|
||||
while (*ptr) {
|
||||
if (*ptr == '\'' || *ptr == '"') {
|
||||
register int delim = *ptr;
|
||||
|
@ -624,7 +624,7 @@ macro2buffer(repl, idf, args)
|
|||
register int n = *ptr++ & 0177;
|
||||
register char *p;
|
||||
|
||||
ASSERT(n > 0);
|
||||
assert(n > 0);
|
||||
p = args->a_rawvec[n-1];
|
||||
if (p) { /* else macro argument missing */
|
||||
while (is_wsp(*p)) p++;
|
||||
|
@ -660,7 +660,7 @@ macro2buffer(repl, idf, args)
|
|||
register int n = *ptr++ & 0177;
|
||||
register char *p, *q;
|
||||
|
||||
ASSERT(n > 0);
|
||||
assert(n > 0);
|
||||
|
||||
/* This is VERY dirty, we look ahead for the
|
||||
## operator. If it's found we use the raw
|
||||
|
@ -718,7 +718,7 @@ stringify(repl, ptr, args)
|
|||
register int n = *ptr++ & 0177;
|
||||
register char *p;
|
||||
|
||||
ASSERT(n != 0);
|
||||
assert(n != 0);
|
||||
p = args->a_rawvec[n-1];
|
||||
add2repl(repl, '"');
|
||||
while (*p) {
|
||||
|
@ -761,7 +761,7 @@ add2repl(repl, ch)
|
|||
{
|
||||
register int index = repl->r_ptr - repl->r_text;
|
||||
|
||||
ASSERT(index < repl->r_size);
|
||||
assert(index < repl->r_size);
|
||||
if (index + 2 >= repl->r_size) {
|
||||
repl->r_text = Realloc(repl->r_text, (unsigned) (repl->r_size <<= 1));
|
||||
repl->r_ptr = repl->r_text + index;
|
||||
|
@ -785,7 +785,7 @@ stash(repl, ch, stashraw)
|
|||
register int index = args->a_expptr - args->a_expbuf;
|
||||
|
||||
if (stashraw >= 0) {
|
||||
ASSERT(index < args->a_expsize);
|
||||
assert(index < args->a_expsize);
|
||||
if (index + 1 >= args->a_expsize) {
|
||||
args->a_expbuf = Realloc(args->a_expbuf,
|
||||
(unsigned) (args->a_expsize <<= 1));
|
||||
|
@ -796,7 +796,7 @@ stash(repl, ch, stashraw)
|
|||
|
||||
if (stashraw) {
|
||||
index = args->a_rawptr - args->a_rawbuf;
|
||||
ASSERT(index < args->a_rawsize);
|
||||
assert(index < args->a_rawsize);
|
||||
if (index + 1 >= args->a_rawsize) {
|
||||
args->a_rawbuf = Realloc(args->a_rawbuf,
|
||||
(unsigned)(args->a_rawsize <<= 1));
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
#include "Lpars.h"
|
||||
#include "align.h"
|
||||
#include "level.h"
|
||||
#include "assert.h"
|
||||
#include "sizes.h"
|
||||
|
||||
/* Type of previous selector declared with a field width specified,
|
||||
|
|
|
@ -5,12 +5,14 @@
|
|||
/* $Id$ */
|
||||
/* S W I T C H - S T A T E M E N T A D M I N I S T R A T I O N */
|
||||
|
||||
#include <assert.h>
|
||||
#include "parameters.h"
|
||||
#ifndef LINT
|
||||
#include <em.h>
|
||||
#else
|
||||
#include "l_em.h"
|
||||
#endif /* LINT */
|
||||
#include <ack_string.h>
|
||||
#include <alloc.h>
|
||||
#include "Lpars.h"
|
||||
#include "label.h"
|
||||
|
@ -18,7 +20,6 @@
|
|||
#include "arith.h"
|
||||
#include "switch.h"
|
||||
#include "code.h"
|
||||
#include "assert.h"
|
||||
#include "expr.h"
|
||||
#include "type.h"
|
||||
#include "sizes.h"
|
||||
|
@ -84,8 +85,6 @@ code_startswitch(expp)
|
|||
C_bra(l_table); /* goto start of switch_table */
|
||||
}
|
||||
|
||||
extern char *long2str();
|
||||
|
||||
code_endswitch()
|
||||
{
|
||||
register struct switch_hdr *sh = switch_stack;
|
||||
|
@ -123,7 +122,7 @@ code_endswitch()
|
|||
size);
|
||||
ce = sh->sh_entries;
|
||||
for (val = sh->sh_lowerbd; val <= sh->sh_upperbd; val++) {
|
||||
ASSERT(ce);
|
||||
assert(ce);
|
||||
if (val == ce->ce_value) {
|
||||
C_rom_ilb(ce->ce_label);
|
||||
ce = ce->next;
|
||||
|
@ -167,7 +166,7 @@ code_case(expr)
|
|||
register struct case_entry *ce;
|
||||
register struct switch_hdr *sh = switch_stack;
|
||||
|
||||
ASSERT(is_cp_cst(expr));
|
||||
assert(is_cp_cst(expr));
|
||||
if (sh == 0) {
|
||||
error("case statement not in switch");
|
||||
return;
|
||||
|
@ -220,7 +219,7 @@ code_case(expr)
|
|||
}
|
||||
}
|
||||
else {
|
||||
ASSERT(c2);
|
||||
assert(c2);
|
||||
ce->next = (struct case_entry *) 0;
|
||||
c2->next = ce;
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
#include "parameters.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <alloc.h>
|
||||
#include "input.h"
|
||||
#include "arith.h"
|
||||
|
|
|
@ -89,6 +89,9 @@ cprogram {
|
|||
"+tabgen_c"
|
||||
),
|
||||
deps = {
|
||||
"./LLlex.h", "./arith.h", "./bits.h", "./class.h",
|
||||
"./file_info.h", "./idf.h", "./input.h",
|
||||
"./parameters.h",
|
||||
"+llgen",
|
||||
"+macro_h",
|
||||
"+replace_h",
|
||||
|
|
|
@ -5,7 +5,9 @@
|
|||
/* $Id$ */
|
||||
/* PREPROCESSOR: CONTROLLINE INTERPRETER */
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "arith.h"
|
||||
#include "LLlex.h"
|
||||
#include "Lpars.h"
|
||||
|
@ -13,7 +15,6 @@
|
|||
#include "input.h"
|
||||
|
||||
#include "parameters.h"
|
||||
#include <assert.h>
|
||||
#include <alloc.h>
|
||||
#include "class.h"
|
||||
#include "macro.h"
|
||||
|
|
|
@ -5,11 +5,12 @@
|
|||
/* $Id$ */
|
||||
/* MAIN PROGRAM */
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "parameters.h"
|
||||
|
||||
#include <alloc.h>
|
||||
#include <assert.h>
|
||||
#include <system.h>
|
||||
#include "arith.h"
|
||||
#include "file_info.h"
|
||||
|
|
|
@ -5,10 +5,12 @@
|
|||
/* $Id$ */
|
||||
/* M A C R O R E P L A C E M E N T */
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <ack_string.h>
|
||||
#include "parameters.h"
|
||||
#include "alloc.h"
|
||||
#include "idf.h"
|
||||
|
@ -17,7 +19,6 @@
|
|||
#include "arith.h"
|
||||
#include "LLlex.h"
|
||||
#include "class.h"
|
||||
#include "assert.h"
|
||||
#include "replace.h"
|
||||
|
||||
extern char *GetIdentifier();
|
||||
|
@ -506,7 +507,6 @@ macro_func(idef)
|
|||
*/
|
||||
register struct macro *mac = idef->id_macro;
|
||||
static char FilNamBuf[PATHLENGTH];
|
||||
char *long2str();
|
||||
|
||||
switch (idef->id_text[2]) {
|
||||
case 'F': /* __FILE__ */
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
#include <em_arith.h>
|
||||
#include <em_label.h>
|
||||
#include <stdlib.h>
|
||||
#include <astring.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "LLlex.h"
|
||||
#include "Lpars.h"
|
||||
|
@ -59,15 +59,24 @@ char*
|
|||
return "";
|
||||
}
|
||||
|
||||
STATIC
|
||||
STATIC int
|
||||
GetFile(name) char* name;
|
||||
{
|
||||
/* Try to find a file with basename "name" and extension ".def",
|
||||
in the directories mentioned in "DEFPATH".
|
||||
*/
|
||||
char* buf = aprintf("%s.def", name);
|
||||
size_t len;
|
||||
int found;
|
||||
char *buf;
|
||||
|
||||
len = strlen(name);
|
||||
buf = Malloc(len + 5);
|
||||
memcpy(buf, name, len);
|
||||
memcpy(buf + len, ".def", 5);
|
||||
DEFPATH[0] = WorkingDir;
|
||||
if (!InsertFile(buf, DEFPATH, &(FileName)))
|
||||
found = InsertFile(buf, DEFPATH, &(FileName));
|
||||
free(buf);
|
||||
if (!found)
|
||||
{
|
||||
error("could not find a DEFINITION MODULE for \"%s\"", name);
|
||||
return 0;
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#include "debug.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <ack_string.h>
|
||||
#include <alloc.h>
|
||||
#include <em_arith.h>
|
||||
#include <em_label.h>
|
||||
|
@ -455,7 +456,6 @@ genrck(tp)
|
|||
arith lb, ub;
|
||||
register label ol;
|
||||
arith size = tp->tp_size;
|
||||
extern char *long2str();
|
||||
register t_type *btp = BaseType(tp);
|
||||
|
||||
if (size < word_size) size = word_size;
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#include "parameters.h"
|
||||
#include "debug.h"
|
||||
|
||||
#include <ack_string.h>
|
||||
#include <alloc.h>
|
||||
#include <assert.h>
|
||||
#include <em_arith.h>
|
||||
|
@ -475,7 +476,7 @@ CutSize(expr)
|
|||
|
||||
InitCst()
|
||||
{
|
||||
extern char *long2str(), *Salloc();
|
||||
extern char *Salloc();
|
||||
register int i = 0;
|
||||
register arith bt = (arith)0;
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
/* next line DEBUG */
|
||||
#include "debug.h"
|
||||
|
||||
#include <stddef.h>
|
||||
#include <alloc.h>
|
||||
#include <assert.h>
|
||||
#include <em_arith.h>
|
||||
|
@ -21,7 +22,7 @@
|
|||
#include "scope.h"
|
||||
#include "type.h"
|
||||
|
||||
#define PC_BUFSIZ (sizeof(struct file) - (int)((struct file *)0)->bufadr)
|
||||
#define PC_BUFSIZ (sizeof(struct file) - offsetof(struct file, bufadr))
|
||||
|
||||
int proclevel = 0; /* nesting level of procedures */
|
||||
int parlevel = 0; /* nesting level of parametersections */
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* H I G H L E V E L S Y M B O L E N T R Y */
|
||||
|
||||
#include <string.h>
|
||||
#include <alloc.h>
|
||||
#include <assert.h>
|
||||
#include <em_arith.h>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* S T A T E M E N T S */
|
||||
{
|
||||
#include <string.h>
|
||||
#include "parameters.h"
|
||||
#include <alloc.h>
|
||||
#include <em.h>
|
||||
|
|
|
@ -15,6 +15,7 @@ static char rcs_mh[]= ID_MH ;
|
|||
* machine dependent back end routines for the Intel 80386
|
||||
*/
|
||||
|
||||
void
|
||||
con_part(sz,w) register sz; word w; {
|
||||
|
||||
while (part_size % sz)
|
||||
|
@ -32,6 +33,7 @@ con_part(sz,w) register sz; word w; {
|
|||
part_size += sz;
|
||||
}
|
||||
|
||||
void
|
||||
con_mult(sz) word sz; {
|
||||
long l;
|
||||
|
||||
|
@ -92,6 +94,7 @@ long si_off;
|
|||
long di_off;
|
||||
int firstreg;
|
||||
|
||||
int
|
||||
regscore(off, size, typ, score, totyp)
|
||||
long off;
|
||||
{
|
||||
|
@ -104,6 +107,7 @@ regscore(off, size, typ, score, totyp)
|
|||
return score;
|
||||
}
|
||||
|
||||
void
|
||||
i_regsave()
|
||||
{
|
||||
si_off = -1;
|
||||
|
@ -111,6 +115,7 @@ i_regsave()
|
|||
firstreg = 0;
|
||||
}
|
||||
|
||||
void
|
||||
f_regsave()
|
||||
{
|
||||
if (si_off != di_off) {
|
||||
|
@ -133,8 +138,9 @@ f_regsave()
|
|||
fprintf(codefile, "mov edi,%ld(ebp)\n", di_off);
|
||||
}
|
||||
|
||||
void
|
||||
regsave(regstr, off, size)
|
||||
char *regstr;
|
||||
const char *regstr;
|
||||
long off;
|
||||
{
|
||||
if (strcmp(regstr, "esi") == 0) {
|
||||
|
@ -147,6 +153,7 @@ regsave(regstr, off, size)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
regreturn()
|
||||
{
|
||||
if (firstreg == 1) {
|
||||
|
@ -165,6 +172,7 @@ regreturn()
|
|||
static int gdb_flag = 0;
|
||||
static char *fp_hook_nam;
|
||||
|
||||
void
|
||||
mach_option(s)
|
||||
char *s;
|
||||
{
|
||||
|
|
|
@ -12,6 +12,9 @@ static char rcsid[]= "$Id$" ;
|
|||
* machine dependent back end routines for the Intel 8080.
|
||||
*/
|
||||
|
||||
#include <stdlib.h> /* atol */
|
||||
|
||||
void
|
||||
con_part(sz,w) register sz; word w; {
|
||||
|
||||
while (part_size % sz)
|
||||
|
@ -30,8 +33,7 @@ con_part(sz,w) register sz; word w; {
|
|||
part_size += sz;
|
||||
}
|
||||
|
||||
long atol();
|
||||
|
||||
void
|
||||
con_mult(sz) word sz; {
|
||||
|
||||
if (argval != 4)
|
||||
|
@ -39,6 +41,7 @@ con_mult(sz) word sz; {
|
|||
fprintf(codefile,".data4\t%ld\n",atol(str));
|
||||
}
|
||||
|
||||
void
|
||||
con_float() {
|
||||
static int warning_given;
|
||||
int i = argval;
|
||||
|
|
|
@ -13,6 +13,7 @@ static char rcs_mh[]= ID_MH ;
|
|||
* machine dependent back end routines for the Intel 8086
|
||||
*/
|
||||
|
||||
void
|
||||
con_part(sz,w) register sz; word w; {
|
||||
|
||||
while (part_size % sz)
|
||||
|
@ -31,6 +32,7 @@ con_part(sz,w) register sz; word w; {
|
|||
part_size += sz;
|
||||
}
|
||||
|
||||
void
|
||||
con_mult(sz) word sz; {
|
||||
long l;
|
||||
|
||||
|
@ -83,6 +85,7 @@ long si_off;
|
|||
long di_off;
|
||||
int firstreg;
|
||||
|
||||
int
|
||||
regscore(off, size, typ, score, totyp)
|
||||
long off;
|
||||
{
|
||||
|
@ -95,6 +98,7 @@ regscore(off, size, typ, score, totyp)
|
|||
return score;
|
||||
}
|
||||
|
||||
void
|
||||
i_regsave()
|
||||
{
|
||||
si_off = -1;
|
||||
|
@ -102,6 +106,7 @@ i_regsave()
|
|||
firstreg = 0;
|
||||
}
|
||||
|
||||
void
|
||||
f_regsave()
|
||||
{
|
||||
if (si_off != di_off) {
|
||||
|
@ -130,8 +135,9 @@ f_regsave()
|
|||
fprintf(codefile, "mov si,%ld(bp)\n", si_off);
|
||||
}
|
||||
|
||||
void
|
||||
regsave(regstr, off, size)
|
||||
char *regstr;
|
||||
const char *regstr;
|
||||
long off;
|
||||
{
|
||||
if (strcmp(regstr, "si") == 0) {
|
||||
|
@ -144,6 +150,7 @@ regsave(regstr, off, size)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
regreturn()
|
||||
{
|
||||
if (firstreg == 1) {
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
#include <stb.h>
|
||||
|
||||
void
|
||||
con_part(sz,w) register sz; word w; {
|
||||
|
||||
while (part_size % sz)
|
||||
|
@ -43,6 +44,7 @@ con_part(sz,w) register sz; word w; {
|
|||
part_size += sz;
|
||||
}
|
||||
|
||||
void
|
||||
con_mult(sz) word sz; {
|
||||
|
||||
if (sz != 4)
|
||||
|
@ -57,6 +59,7 @@ con_mult(sz) word sz; {
|
|||
#define FL_MSB_AT_LOW_ADDRESS 1
|
||||
#include <con_float>
|
||||
|
||||
int
|
||||
regscore(off,size,typ,score,totyp)
|
||||
long off;
|
||||
{
|
||||
|
@ -93,6 +96,7 @@ struct regsav_t {
|
|||
|
||||
int regnr;
|
||||
|
||||
void
|
||||
i_regsave()
|
||||
{
|
||||
regnr = 0;
|
||||
|
@ -100,6 +104,7 @@ i_regsave()
|
|||
|
||||
full nlocals;
|
||||
|
||||
void
|
||||
regreturn()
|
||||
{
|
||||
register struct regsav_t *p;
|
||||
|
@ -127,6 +132,7 @@ regreturn()
|
|||
fputs("unlk a6\nrts\n", codefile);
|
||||
}
|
||||
|
||||
void
|
||||
f_regsave()
|
||||
{
|
||||
register struct regsav_t *p;
|
||||
|
@ -176,8 +182,9 @@ f_regsave()
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
regsave(s,off,size)
|
||||
char *s;
|
||||
const char *s;
|
||||
long off;
|
||||
{
|
||||
assert (regnr < 9);
|
||||
|
@ -196,6 +203,7 @@ prolog(n) full n; {
|
|||
#ifdef MACH_OPTIONS
|
||||
static int gdb_flag = 0;
|
||||
|
||||
void
|
||||
mach_option(s)
|
||||
char *s;
|
||||
{
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
|
||||
static long framesize;
|
||||
|
||||
void
|
||||
con_part(int sz, word w)
|
||||
{
|
||||
while (part_size % sz)
|
||||
|
@ -34,6 +35,7 @@ con_part(int sz, word w)
|
|||
part_size += sz;
|
||||
}
|
||||
|
||||
void
|
||||
con_mult(word sz)
|
||||
{
|
||||
|
||||
|
@ -146,6 +148,7 @@ regscore(long offset, int size, int type, int frequency, int totype)
|
|||
|
||||
/* Initialise regvar system for one function. */
|
||||
|
||||
void
|
||||
i_regsave(void)
|
||||
{
|
||||
int i;
|
||||
|
@ -163,6 +166,7 @@ i_regsave(void)
|
|||
|
||||
/* Mark a register as being saved. */
|
||||
|
||||
void
|
||||
regsave(const char* regname, long offset, int size)
|
||||
{
|
||||
int regnum = atoi(regname + 1);
|
||||
|
@ -223,6 +227,7 @@ saveloadregs(const char* ops, const char* opm, const char *opf)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
f_regsave(void)
|
||||
{
|
||||
int reg;
|
||||
|
@ -248,6 +253,7 @@ f_regsave(void)
|
|||
|
||||
/* Restore all saved registers. */
|
||||
|
||||
void
|
||||
regreturn(void)
|
||||
{
|
||||
saveloadregs("lwz", "lmw", "lfd");
|
||||
|
|
|
@ -21,6 +21,8 @@ definerule("build_as",
|
|||
srcs = { "mach/proto/as/comm2.y" },
|
||||
outleaf = "comm2.y",
|
||||
deps = {
|
||||
"mach/proto/as/comm0.h",
|
||||
"mach/proto/as/comm1.h",
|
||||
"h+emheaders",
|
||||
archlib,
|
||||
},
|
||||
|
|
|
@ -105,16 +105,16 @@ _include "out.h"
|
|||
#include "out.h"
|
||||
#endif
|
||||
|
||||
#if DEBUG == 0
|
||||
#define assert(ex) /* nothing */
|
||||
/*
|
||||
* Define assert(). Disable assertions if DEBUG == 0.
|
||||
*/
|
||||
#if DEBUG == 0 && !defined(NDEBUG)
|
||||
#define NDEBUG
|
||||
#endif
|
||||
|
||||
#if DEBUG == 1
|
||||
#define assert(ex) {if (!(ex)) assert1();}
|
||||
#endif
|
||||
|
||||
#if DEBUG == 2
|
||||
#define assert(ex) {if (!(ex)) assert2(__FILE__, __LINE__);}
|
||||
#ifdef _include
|
||||
_include <assert.h>
|
||||
#else
|
||||
#include <assert.h>
|
||||
#endif
|
||||
|
||||
#define CTRL(x) ((x) & 037)
|
||||
|
|
|
@ -104,6 +104,11 @@ extern struct outhead outhead;
|
|||
extern int curr_token;
|
||||
|
||||
/* forward function declarations */
|
||||
/* comm2.y */
|
||||
int yyparse(void);
|
||||
/* comm4.c */
|
||||
void stop(void);
|
||||
void newmodule(const char *);
|
||||
/* comm5.c */
|
||||
int yylex(void);
|
||||
void putval(int);
|
||||
|
@ -112,20 +117,52 @@ int nextchar(void);
|
|||
#ifdef ASLD
|
||||
char *readident(int);
|
||||
#endif
|
||||
int hash(char *);
|
||||
item_t *item_search(char *);
|
||||
int hash(const char *);
|
||||
item_t *item_search(const char *);
|
||||
void item_insert(item_t *, int);
|
||||
item_t *item_alloc(int);
|
||||
item_t *fb_alloc(int);
|
||||
item_t *fb_shift(int);
|
||||
/* comm6.c */
|
||||
void newequate(item_t *, int);
|
||||
void newident(item_t *, int);
|
||||
void newlabel(item_t *);
|
||||
void newsect(item_t *);
|
||||
void newbase(valu_t);
|
||||
void newcomm(item_t *, valu_t);
|
||||
void switchsect(int);
|
||||
void align(valu_t);
|
||||
#ifdef RELOCATION
|
||||
void newrelo(int, int);
|
||||
#endif
|
||||
long new_string(const char *);
|
||||
void newsymb(const char *, int, int, valu_t);
|
||||
/* comm7.c */
|
||||
valu_t load();
|
||||
char *remember();
|
||||
FILE *ffcreat();
|
||||
FILE *fftemp();
|
||||
valu_t load(const item_t *);
|
||||
int store(item_t *, valu_t);
|
||||
char *remember(char *);
|
||||
int combine(int, int, int);
|
||||
#ifdef LISTING
|
||||
int printx(int, valu_t);
|
||||
void listline(int);
|
||||
#endif
|
||||
#ifdef THREE_PASS
|
||||
int small(int, int);
|
||||
#endif
|
||||
void emit1(int);
|
||||
void emit2(int);
|
||||
void emit4(long);
|
||||
void emitx(valu_t, int);
|
||||
void emitstr(int);
|
||||
void ffreopen(char *, FILE *);
|
||||
FILE *ffcreat(char *);
|
||||
FILE *fftemp(char *, char *);
|
||||
void yyerror(const char *);
|
||||
void nosect(void);
|
||||
void fatal(const char *, ...);
|
||||
void serror(const char *, ...);
|
||||
void warning(const char *, ...);
|
||||
void nofit(void);
|
||||
|
||||
/* ========== Machine dependent C declarations ========== */
|
||||
|
||||
|
|
|
@ -15,15 +15,23 @@
|
|||
#include "comm0.h"
|
||||
#include "comm1.h"
|
||||
#include "y.tab.h"
|
||||
#include <object.h>
|
||||
|
||||
extern YYSTYPE yylval;
|
||||
|
||||
void setupoutput();
|
||||
void commfinish();
|
||||
static void pass_1(int, char **);
|
||||
#ifdef ASLD
|
||||
static void archive(void);
|
||||
static int needed(void);
|
||||
#endif
|
||||
static void parse(char *);
|
||||
static void pass_23(int);
|
||||
static void setupoutput(void);
|
||||
static void commfinish(void);
|
||||
|
||||
/* ========== Machine independent C routines ========== */
|
||||
|
||||
void stop() {
|
||||
void stop(void) {
|
||||
#if DEBUG < 2
|
||||
unlink(temppath);
|
||||
#ifdef LISTING
|
||||
|
@ -33,11 +41,11 @@ void stop() {
|
|||
exit(nerrors != 0);
|
||||
}
|
||||
|
||||
main(argc, argv)
|
||||
char **argv;
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
register char *p;
|
||||
register i;
|
||||
char *p;
|
||||
int i;
|
||||
static char sigs[] = {
|
||||
SIGHUP, SIGINT, SIGQUIT, SIGTERM, 0
|
||||
};
|
||||
|
@ -130,15 +138,15 @@ char **argv;
|
|||
|
||||
/* ---------- pass 1: arguments, modules, archives ---------- */
|
||||
|
||||
pass_1(argc, argv)
|
||||
char **argv;
|
||||
static void
|
||||
pass_1(int argc, char **argv)
|
||||
{
|
||||
register char *p;
|
||||
register item_t *ip;
|
||||
char *p;
|
||||
item_t *ip;
|
||||
#ifdef ASLD
|
||||
char armagic[2];
|
||||
#else
|
||||
register nfile = 0;
|
||||
int nfile = 0;
|
||||
#endif
|
||||
|
||||
#ifdef THREE_PASS
|
||||
|
@ -198,7 +206,7 @@ char **argv;
|
|||
machfinish(PASS_1);
|
||||
#ifdef ASLD
|
||||
if (unresolved) {
|
||||
register int i;
|
||||
int i;
|
||||
|
||||
nerrors++;
|
||||
fflush(stdout);
|
||||
|
@ -224,8 +232,9 @@ char **argv;
|
|||
|
||||
#ifdef ASLD
|
||||
|
||||
archive() {
|
||||
register long offset;
|
||||
static void
|
||||
archive(void) {
|
||||
long offset;
|
||||
struct ar_hdr header;
|
||||
char getsize[AR_TOTAL];
|
||||
|
||||
|
@ -257,14 +266,15 @@ archive() {
|
|||
archmode = 0;
|
||||
}
|
||||
|
||||
needed()
|
||||
static int
|
||||
needed(void)
|
||||
{
|
||||
register c, first;
|
||||
register item_t *ip;
|
||||
register need;
|
||||
int c, first;
|
||||
item_t *ip;
|
||||
int need;
|
||||
|
||||
#ifdef LISTING
|
||||
register save;
|
||||
int save;
|
||||
|
||||
save = listflag; listflag = 0;
|
||||
#endif
|
||||
|
@ -309,12 +319,12 @@ needed()
|
|||
}
|
||||
#endif /* ASLD */
|
||||
|
||||
parse(s)
|
||||
char *s;
|
||||
static void
|
||||
parse(char *s)
|
||||
{
|
||||
register i;
|
||||
register item_t *ip;
|
||||
register char *p;
|
||||
int i;
|
||||
item_t *ip;
|
||||
char *p;
|
||||
|
||||
for (p = s; *p; )
|
||||
if (*p++ == '/')
|
||||
|
@ -374,13 +384,14 @@ char *s;
|
|||
}
|
||||
}
|
||||
|
||||
pass_23(n)
|
||||
static void
|
||||
pass_23(int n)
|
||||
{
|
||||
register i;
|
||||
int i;
|
||||
#ifdef ASLD
|
||||
register ADDR_T base = 0;
|
||||
ADDR_T base = 0;
|
||||
#endif
|
||||
register sect_t *sp;
|
||||
sect_t *sp;
|
||||
|
||||
if (nerrors)
|
||||
stop();
|
||||
|
@ -433,8 +444,8 @@ pass_23(n)
|
|||
machfinish(n);
|
||||
}
|
||||
|
||||
newmodule(s)
|
||||
char *s;
|
||||
void
|
||||
newmodule(const char *s)
|
||||
{
|
||||
static char nmbuf[STRINGMAX];
|
||||
|
||||
|
@ -461,13 +472,13 @@ char *s;
|
|||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
setupoutput()
|
||||
static void
|
||||
setupoutput(void)
|
||||
{
|
||||
register sect_t *sp;
|
||||
register long off;
|
||||
sect_t *sp;
|
||||
long off;
|
||||
struct outsect outsect;
|
||||
register struct outsect *pos = &outsect;
|
||||
struct outsect *pos = &outsect;
|
||||
|
||||
if (! wr_open(aoutpath)) {
|
||||
fatal("can't create %s", aoutpath);
|
||||
|
@ -497,16 +508,16 @@ setupoutput()
|
|||
outhead.oh_nchar = off; /* see newsymb() */
|
||||
}
|
||||
|
||||
void
|
||||
commfinish()
|
||||
static void
|
||||
commfinish(void)
|
||||
{
|
||||
#ifndef ASLD
|
||||
register int i;
|
||||
int i;
|
||||
#endif
|
||||
register struct common_t *cp;
|
||||
register item_t *ip;
|
||||
register sect_t *sp;
|
||||
register valu_t addr;
|
||||
struct common_t *cp;
|
||||
item_t *ip;
|
||||
sect_t *sp;
|
||||
valu_t addr;
|
||||
|
||||
switchsect(S_UND);
|
||||
/*
|
||||
|
|
|
@ -17,7 +17,7 @@ static int inident(int);
|
|||
static int innumber(int);
|
||||
static int instring(int);
|
||||
static int inescape(void);
|
||||
static int infbsym(char *);
|
||||
static int infbsym(const char *);
|
||||
|
||||
int
|
||||
yylex(void)
|
||||
|
@ -85,9 +85,9 @@ yylex(void)
|
|||
void
|
||||
putval(int c)
|
||||
{
|
||||
register valu_t v;
|
||||
register n = 0;
|
||||
register char *p = 0;
|
||||
valu_t v;
|
||||
int n = 0;
|
||||
char *p = 0;
|
||||
|
||||
assert(c == (c & 0xffff));
|
||||
switch (c) {
|
||||
|
@ -163,9 +163,9 @@ putval(int c)
|
|||
int
|
||||
getval(int c)
|
||||
{
|
||||
register n = 0;
|
||||
register valu_t v;
|
||||
register char *p = 0;
|
||||
int n = 0;
|
||||
valu_t v;
|
||||
char *p = 0;
|
||||
|
||||
switch (c) {
|
||||
case CODE1:
|
||||
|
@ -229,7 +229,7 @@ getval(int c)
|
|||
int
|
||||
nextchar(void)
|
||||
{
|
||||
register c;
|
||||
int c;
|
||||
|
||||
if (peekc != -1) {
|
||||
c = peekc;
|
||||
|
@ -254,7 +254,7 @@ nextchar(void)
|
|||
static void
|
||||
readcode(int n)
|
||||
{
|
||||
register c;
|
||||
int c;
|
||||
|
||||
yylval.y_valu = 0;
|
||||
do {
|
||||
|
@ -283,8 +283,9 @@ induo(int c)
|
|||
('>'<<8) | '>', OP_RR,
|
||||
('|'<<8) | '|', OP_OO,
|
||||
('&'<<8) | '&', OP_AA,
|
||||
0 /* terminates array */
|
||||
};
|
||||
register short *p;
|
||||
short *p;
|
||||
|
||||
c = (c<<8) | nextchar();
|
||||
for (p = duo; *p; p++)
|
||||
|
@ -299,9 +300,9 @@ static char name[NAMEMAX+1];
|
|||
static int
|
||||
inident(int c)
|
||||
{
|
||||
register char *p = name;
|
||||
register item_t *ip;
|
||||
register n = NAMEMAX;
|
||||
char *p = name;
|
||||
item_t *ip;
|
||||
int n = NAMEMAX;
|
||||
|
||||
do {
|
||||
if (--n >= 0)
|
||||
|
@ -330,8 +331,8 @@ inident(int c)
|
|||
char *
|
||||
readident(int c)
|
||||
{
|
||||
register n = NAMEMAX;
|
||||
register char *p = name;
|
||||
int n = NAMEMAX;
|
||||
char *p = name;
|
||||
|
||||
do {
|
||||
if (--n >= 0)
|
||||
|
@ -347,8 +348,8 @@ readident(int c)
|
|||
static int
|
||||
innumber(int c)
|
||||
{
|
||||
register char *p;
|
||||
register radix;
|
||||
char *p;
|
||||
int radix;
|
||||
static char num[20+1];
|
||||
|
||||
p = num;
|
||||
|
@ -394,8 +395,8 @@ innumber(int c)
|
|||
static int
|
||||
instring(int termc)
|
||||
{
|
||||
register char *p;
|
||||
register c;
|
||||
char *p;
|
||||
int c;
|
||||
static int maxstring = 0;
|
||||
|
||||
if (! maxstring) {
|
||||
|
@ -434,7 +435,7 @@ instring(int termc)
|
|||
static int
|
||||
inescape(void)
|
||||
{
|
||||
register c, j, r;
|
||||
int c, j, r;
|
||||
|
||||
c = nextchar();
|
||||
if (c >= '0' && c <= '7') {
|
||||
|
@ -463,10 +464,10 @@ inescape(void)
|
|||
}
|
||||
|
||||
static int
|
||||
infbsym(char *p)
|
||||
infbsym(const char *p)
|
||||
{
|
||||
register lab;
|
||||
register item_t *ip;
|
||||
int lab;
|
||||
item_t *ip;
|
||||
|
||||
lab = *p++ - '0';
|
||||
if ((unsigned)lab < 10) {
|
||||
|
@ -490,10 +491,10 @@ ok:
|
|||
}
|
||||
|
||||
int
|
||||
hash(char *p)
|
||||
hash(const char *p)
|
||||
{
|
||||
register unsigned short h;
|
||||
register c;
|
||||
unsigned short h;
|
||||
int c;
|
||||
|
||||
h = 0;
|
||||
while (c = *p++) {
|
||||
|
@ -504,10 +505,10 @@ hash(char *p)
|
|||
}
|
||||
|
||||
item_t *
|
||||
item_search(char *p)
|
||||
item_search(const char *p)
|
||||
{
|
||||
register h;
|
||||
register item_t *ip;
|
||||
int h;
|
||||
item_t *ip;
|
||||
|
||||
for (h = hash(p); h < H_TOTAL; h += H_SIZE) {
|
||||
ip = hashtab[h];
|
||||
|
@ -532,8 +533,8 @@ item_insert(item_t *ip, int h)
|
|||
item_t *
|
||||
item_alloc(int typ)
|
||||
{
|
||||
register item_t *ip;
|
||||
static nleft = 0;
|
||||
item_t *ip;
|
||||
static int nleft = 0;
|
||||
static item_t *next;
|
||||
|
||||
if (--nleft < 0) {
|
||||
|
@ -553,7 +554,7 @@ item_alloc(int typ)
|
|||
item_t *
|
||||
fb_alloc(int lab)
|
||||
{
|
||||
register item_t *ip, *p;
|
||||
item_t *ip, *p;
|
||||
|
||||
ip = item_alloc(S_UND);
|
||||
p = fb_ptr[FB_TAIL+lab];
|
||||
|
@ -568,7 +569,7 @@ fb_alloc(int lab)
|
|||
item_t *
|
||||
fb_shift(int lab)
|
||||
{
|
||||
register item_t *ip;
|
||||
item_t *ip;
|
||||
|
||||
ip = fb_ptr[FB_FORW+lab];
|
||||
if (ip == 0)
|
||||
|
|
|
@ -11,14 +11,12 @@
|
|||
#include "comm0.h"
|
||||
#include "comm1.h"
|
||||
#include "y.tab.h"
|
||||
#include <object.h>
|
||||
|
||||
void switchsect();
|
||||
void newsymb();
|
||||
void newident();
|
||||
static void new_common(item_t *);
|
||||
|
||||
newequate(ip, typ)
|
||||
register item_t *ip;
|
||||
register int typ;
|
||||
void
|
||||
newequate(item_t *ip, int typ)
|
||||
{
|
||||
typ &= ~S_EXT;
|
||||
if (typ & S_COM)
|
||||
|
@ -39,10 +37,9 @@ register int typ;
|
|||
}
|
||||
|
||||
void
|
||||
newident(ip, typ)
|
||||
register item_t *ip;
|
||||
newident(item_t *ip, int typ)
|
||||
{
|
||||
register flag;
|
||||
int flag;
|
||||
#ifdef GENLAB
|
||||
static char genlab[] = GENLAB;
|
||||
#endif /* GENLAB */
|
||||
|
@ -80,13 +77,10 @@ register item_t *ip;
|
|||
}
|
||||
|
||||
void
|
||||
newlabel(ip)
|
||||
register item_t *ip;
|
||||
newlabel(item_t *ip)
|
||||
{
|
||||
#if DEBUG != 0
|
||||
#ifdef THREE_PASS
|
||||
register ADDR_T oldval = ip->i_valu;
|
||||
#endif
|
||||
#if defined(THREE_PASS) && !defined(NDEBUG)
|
||||
ADDR_T oldval = ip->i_valu;
|
||||
#endif
|
||||
|
||||
if (DOTSCT == NULL)
|
||||
|
@ -100,11 +94,11 @@ register item_t *ip;
|
|||
#endif
|
||||
}
|
||||
|
||||
newsect(ip)
|
||||
register item_t *ip;
|
||||
void
|
||||
newsect(item_t *ip)
|
||||
{
|
||||
register int typ;
|
||||
register sect_t *sp = NULL;
|
||||
int typ;
|
||||
sect_t *sp = NULL;
|
||||
|
||||
typ = ip->i_type & S_TYP;
|
||||
if (typ == S_UND) {
|
||||
|
@ -138,11 +132,11 @@ register item_t *ip;
|
|||
}
|
||||
|
||||
/*ARGSUSED*/
|
||||
newbase(base)
|
||||
valu_t base;
|
||||
void
|
||||
newbase(valu_t base)
|
||||
{
|
||||
#ifdef ASLD
|
||||
register sect_t *sp;
|
||||
sect_t *sp;
|
||||
|
||||
if ((sp = DOTSCT) == NULL)
|
||||
nosect();
|
||||
|
@ -166,9 +160,8 @@ valu_t base;
|
|||
* - maximum length of .comm is recorded in i_valu during PASS_1
|
||||
* - i_valu is used for relocation info during PASS_3
|
||||
*/
|
||||
newcomm(ip, val)
|
||||
register item_t *ip;
|
||||
valu_t val;
|
||||
void
|
||||
newcomm(item_t *ip, valu_t val)
|
||||
{
|
||||
if (pass == PASS_1) {
|
||||
if (DOTSCT == NULL)
|
||||
|
@ -190,10 +183,9 @@ valu_t val;
|
|||
}
|
||||
|
||||
void
|
||||
switchsect(newtyp)
|
||||
int newtyp;
|
||||
switchsect(int newtyp)
|
||||
{
|
||||
register sect_t *sp;
|
||||
sect_t *sp;
|
||||
|
||||
if (sp = DOTSCT)
|
||||
sp->s_size = DOTVAL - sp->s_base;
|
||||
|
@ -209,11 +201,11 @@ int newtyp;
|
|||
DOTTYP = newtyp;
|
||||
}
|
||||
|
||||
align(bytes)
|
||||
valu_t bytes;
|
||||
void
|
||||
align(valu_t bytes)
|
||||
{
|
||||
register valu_t gap;
|
||||
register sect_t *sp;
|
||||
valu_t gap;
|
||||
sect_t *sp;
|
||||
|
||||
if ((sp = DOTSCT) == NULL)
|
||||
nosect();
|
||||
|
@ -250,7 +242,7 @@ valu_t bytes;
|
|||
|
||||
#ifdef RELOCATION
|
||||
void
|
||||
newrelo(s, n)
|
||||
newrelo(int s, int n)
|
||||
{
|
||||
int iscomm;
|
||||
struct outrelo outrelo;
|
||||
|
@ -319,8 +311,7 @@ newrelo(s, n)
|
|||
#endif
|
||||
|
||||
long
|
||||
new_string(s)
|
||||
char *s;
|
||||
new_string(const char *s)
|
||||
{
|
||||
long r = 0;
|
||||
|
||||
|
@ -335,9 +326,7 @@ new_string(s)
|
|||
}
|
||||
|
||||
void
|
||||
newsymb(name, type, desc, valu)
|
||||
register char *name;
|
||||
valu_t valu;
|
||||
newsymb(const char *name, int type, int desc, valu_t valu)
|
||||
{
|
||||
struct outname outname;
|
||||
|
||||
|
@ -357,11 +346,11 @@ valu_t valu;
|
|||
wr_name(&outname, 1);
|
||||
}
|
||||
|
||||
new_common(ip)
|
||||
item_t *ip;
|
||||
static void
|
||||
new_common(item_t *ip)
|
||||
{
|
||||
register struct common_t *cp;
|
||||
static nleft = 0;
|
||||
struct common_t *cp;
|
||||
static int nleft = 0;
|
||||
static struct common_t *next;
|
||||
|
||||
if (--nleft < 0) {
|
||||
|
|
|
@ -12,13 +12,13 @@
|
|||
#include "comm1.h"
|
||||
#include "y.tab.h"
|
||||
#include <stdarg.h>
|
||||
#include <object.h>
|
||||
|
||||
valu_t
|
||||
load(ip)
|
||||
register item_t *ip;
|
||||
load(const item_t *ip)
|
||||
{
|
||||
#ifdef ASLD
|
||||
register typ;
|
||||
int typ;
|
||||
|
||||
typ = ip->i_type & S_TYP;
|
||||
if ((typ -= S_MIN) < 0) /* S_UND or S_ABS */
|
||||
|
@ -37,12 +37,11 @@ register item_t *ip;
|
|||
#endif
|
||||
}
|
||||
|
||||
store(ip, val)
|
||||
register item_t *ip;
|
||||
valu_t val;
|
||||
int
|
||||
store(item_t *ip, valu_t val)
|
||||
{
|
||||
#ifdef ASLD
|
||||
register typ;
|
||||
int typ;
|
||||
|
||||
typ = ip->i_type & S_TYP;
|
||||
if ((typ -= S_MIN) >= 0)
|
||||
|
@ -57,12 +56,11 @@ valu_t val;
|
|||
}
|
||||
|
||||
char *
|
||||
remember(s)
|
||||
register char *s;
|
||||
remember(char *s)
|
||||
{
|
||||
register char *p;
|
||||
register n;
|
||||
static nleft = 0;
|
||||
char *p;
|
||||
int n;
|
||||
static int nleft = 0;
|
||||
static char *next;
|
||||
|
||||
p = s;
|
||||
|
@ -85,8 +83,8 @@ register char *s;
|
|||
return(s);
|
||||
}
|
||||
|
||||
combine(typ1, typ2, op)
|
||||
register typ1, typ2;
|
||||
int
|
||||
combine(int typ1, int typ2, int op)
|
||||
{
|
||||
switch (op) {
|
||||
case '+':
|
||||
|
@ -122,12 +120,12 @@ register typ1, typ2;
|
|||
}
|
||||
|
||||
#ifdef LISTING
|
||||
printx(ndig, val)
|
||||
valu_t val;
|
||||
int
|
||||
printx(int ndig, valu_t val)
|
||||
{
|
||||
static char buf[8];
|
||||
register char *p;
|
||||
register c, n;
|
||||
char *p;
|
||||
int c, n;
|
||||
|
||||
p = buf; n = ndig;
|
||||
do {
|
||||
|
@ -140,12 +138,11 @@ valu_t val;
|
|||
} while (p > buf);
|
||||
return(ndig);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef LISTING
|
||||
listline(textline)
|
||||
void
|
||||
listline(int textline)
|
||||
{
|
||||
register c;
|
||||
int c;
|
||||
|
||||
if ((listflag & 4) && (c = getc(listfile)) != '\n' && textline) {
|
||||
if (listcolm >= 24)
|
||||
|
@ -176,10 +173,11 @@ listline(textline)
|
|||
#define PBITTABSZ 128
|
||||
static char *pbittab[PBITTABSZ];
|
||||
|
||||
small(fitsmall, gain)
|
||||
int
|
||||
small(int fitsmall, int gain)
|
||||
{
|
||||
register bit;
|
||||
register char *p;
|
||||
int bit;
|
||||
char *p;
|
||||
|
||||
if (DOTSCT == NULL)
|
||||
nosect();
|
||||
|
@ -231,7 +229,8 @@ small(fitsmall, gain)
|
|||
|
||||
/* ---------- output ---------- */
|
||||
|
||||
emit1(arg)
|
||||
void
|
||||
emit1(int arg)
|
||||
{
|
||||
static int olddottyp = -1;
|
||||
#ifdef LISTING
|
||||
|
@ -269,8 +268,8 @@ emit1(arg)
|
|||
DOTVAL++;
|
||||
}
|
||||
|
||||
emit2(arg)
|
||||
int arg;
|
||||
void
|
||||
emit2(int arg)
|
||||
{
|
||||
#ifdef BYTES_REVERSED
|
||||
emit1((arg>>8)); emit1(arg);
|
||||
|
@ -279,8 +278,8 @@ int arg;
|
|||
#endif
|
||||
}
|
||||
|
||||
emit4(arg)
|
||||
long arg;
|
||||
void
|
||||
emit4(long arg)
|
||||
{
|
||||
#ifdef WORDS_REVERSED
|
||||
emit2((int)(arg>>16)); emit2((int)(arg));
|
||||
|
@ -289,9 +288,8 @@ long arg;
|
|||
#endif
|
||||
}
|
||||
|
||||
emitx(val, n)
|
||||
valu_t val;
|
||||
int n;
|
||||
void
|
||||
emitx(valu_t val, int n)
|
||||
{
|
||||
switch (n) {
|
||||
case RELO1:
|
||||
|
@ -315,10 +313,11 @@ int n;
|
|||
}
|
||||
}
|
||||
|
||||
emitstr(zero)
|
||||
void
|
||||
emitstr(int zero)
|
||||
{
|
||||
register i;
|
||||
register char *p;
|
||||
int i;
|
||||
char *p;
|
||||
|
||||
p = stringbuf;
|
||||
i = stringlen;
|
||||
|
@ -330,17 +329,15 @@ emitstr(zero)
|
|||
|
||||
/* ---------- Error checked file I/O ---------- */
|
||||
|
||||
ffreopen(s, f)
|
||||
char *s;
|
||||
FILE *f;
|
||||
void
|
||||
ffreopen(char *s, FILE *f)
|
||||
{
|
||||
if (freopen(s, "r", f) == NULL)
|
||||
fatal("can't reopen %s", s);
|
||||
}
|
||||
|
||||
FILE *
|
||||
ffcreat(s)
|
||||
char *s;
|
||||
ffcreat(char *s)
|
||||
{
|
||||
FILE *f;
|
||||
|
||||
|
@ -355,10 +352,9 @@ char *s;
|
|||
char *tmp_dir = TMPDIR;
|
||||
|
||||
FILE *
|
||||
fftemp(path, tail)
|
||||
char *path, *tail;
|
||||
fftemp(char *path, char *tail)
|
||||
{
|
||||
register char *dir;
|
||||
char *dir;
|
||||
|
||||
if ((dir = getenv("TMPDIR")) == NULL)
|
||||
dir = tmp_dir;
|
||||
|
@ -369,20 +365,24 @@ char *path, *tail;
|
|||
|
||||
/* ---------- Error handling ---------- */
|
||||
|
||||
/*VARARGS*/
|
||||
yyerror(){} /* we will do our own error printing */
|
||||
/* ARGSUSED */
|
||||
void
|
||||
yyerror(const char *message)
|
||||
{} /* we will do our own error printing */
|
||||
|
||||
nosect()
|
||||
void
|
||||
nosect(void)
|
||||
{
|
||||
fatal("no sections");
|
||||
}
|
||||
|
||||
wr_fatal()
|
||||
void
|
||||
wr_fatal(void)
|
||||
{
|
||||
fatal("write error");
|
||||
}
|
||||
|
||||
void diag(const char* tail, const char* s, va_list ap)
|
||||
static void diag(const char* tail, const char* s, va_list ap)
|
||||
{
|
||||
fflush(stdout);
|
||||
if (modulename)
|
||||
|
@ -406,22 +406,7 @@ void fatal(const char* s, ...)
|
|||
va_end(ap);
|
||||
}
|
||||
|
||||
#if DEBUG == 2
|
||||
assert2(file, line)
|
||||
char *file;
|
||||
{
|
||||
fatal("assertion failed (%s, %d)", file, line);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if DEBUG == 1
|
||||
assert1()
|
||||
{
|
||||
fatal("assertion failed");
|
||||
abort();
|
||||
}
|
||||
#endif
|
||||
|
||||
/* VARARGS1 */
|
||||
void serror(const char* s, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
@ -447,7 +432,8 @@ void warning(const char* s, ...)
|
|||
va_end(ap);
|
||||
}
|
||||
|
||||
nofit()
|
||||
void
|
||||
nofit(void)
|
||||
{
|
||||
if (pass == PASS_3)
|
||||
warning("too big");
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
/*
|
||||
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||
* See the copyright notice in the ACK home directory, in the file "Copyright".
|
||||
*/
|
||||
/* $Id$ */
|
||||
|
||||
#undef NDEBUG
|
||||
#ifndef NDEBUG
|
||||
#define assert(x) if(!(x)) badassertion("x",__FILE__,__LINE__)
|
||||
#else
|
||||
#define assert(x) /* nothing */
|
||||
#endif
|
|
@ -11,7 +11,15 @@ definerule("build_ncg",
|
|||
name = e.name.."/headers",
|
||||
srcs = {},
|
||||
hdrs = {
|
||||
"mach/proto/ncg/*.h",
|
||||
"mach/proto/ncg/data.h",
|
||||
"mach/proto/ncg/equiv.h",
|
||||
"mach/proto/ncg/glosym.h",
|
||||
"mach/proto/ncg/label.h",
|
||||
"mach/proto/ncg/param.h",
|
||||
"mach/proto/ncg/regvar.h",
|
||||
"mach/proto/ncg/result.h",
|
||||
"mach/proto/ncg/state.h",
|
||||
"mach/proto/ncg/types.h",
|
||||
"mach/"..e.arch.."/ncg/mach.c",
|
||||
"mach/"..e.arch.."/ncg/*.h",
|
||||
}
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
static char rcsid[] = "$Id$";
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include "assert.h"
|
||||
#include "param.h"
|
||||
#include "tables.h"
|
||||
#include "types.h"
|
||||
|
@ -14,6 +14,9 @@ static char rcsid[] = "$Id$";
|
|||
#include "state.h"
|
||||
#include "equiv.h"
|
||||
#include "extern.h"
|
||||
#ifdef REGVARS
|
||||
#include "regvar.h" /* regreturn */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||
|
@ -27,13 +30,6 @@ static char rcsid[] = "$Id$";
|
|||
|
||||
byte startupcode[] = { DO_NEXTEM };
|
||||
|
||||
byte* nextem();
|
||||
unsigned costcalc();
|
||||
unsigned docoerc();
|
||||
unsigned stackupto();
|
||||
string tostring();
|
||||
string ad2str();
|
||||
|
||||
#ifdef NDEBUG
|
||||
#define DEBUG(string)
|
||||
#else
|
||||
|
@ -124,7 +120,7 @@ unsigned codegen(byte* codep, int ply, int toplevel, unsigned costlimit, int for
|
|||
byte* bp;
|
||||
int n;
|
||||
unsigned mindistance, dist;
|
||||
register i;
|
||||
int i;
|
||||
int cindex;
|
||||
int npos, pos[MAXRULE];
|
||||
unsigned mincost, t;
|
||||
|
@ -295,8 +291,7 @@ unsigned codegen(byte* codep, int ply, int toplevel, unsigned costlimit, int for
|
|||
DEBUG("XXMATCH");
|
||||
case DO_XMATCH:
|
||||
{
|
||||
register i;
|
||||
int temp;
|
||||
int i, temp;
|
||||
|
||||
DEBUG("XMATCH");
|
||||
tokpatlen = (codep[-1] >> 5) & 07;
|
||||
|
@ -306,8 +301,7 @@ unsigned codegen(byte* codep, int ply, int toplevel, unsigned costlimit, int for
|
|||
}
|
||||
case DO_MATCH:
|
||||
{
|
||||
register i;
|
||||
int j;
|
||||
int i, j;
|
||||
unsigned mincost, t;
|
||||
token_p tp;
|
||||
int size, lsize;
|
||||
|
@ -603,8 +597,7 @@ unsigned codegen(byte* codep, int ply, int toplevel, unsigned costlimit, int for
|
|||
case DO_KILLREG:
|
||||
case DO_RREMOVE:
|
||||
{ /* register remove */
|
||||
register i;
|
||||
int nodeno;
|
||||
int i, nodeno;
|
||||
token_p tp;
|
||||
tkdef_p tdp;
|
||||
result_t result;
|
||||
|
@ -650,7 +643,7 @@ unsigned codegen(byte* codep, int ply, int toplevel, unsigned costlimit, int for
|
|||
}
|
||||
case DO_DEALLOCATE:
|
||||
{
|
||||
register i;
|
||||
int i;
|
||||
tkdef_p tdp;
|
||||
int tinstno;
|
||||
token_t token;
|
||||
|
@ -684,8 +677,7 @@ unsigned codegen(byte* codep, int ply, int toplevel, unsigned costlimit, int for
|
|||
}
|
||||
case DO_ALLOCATE:
|
||||
{
|
||||
register i;
|
||||
int j;
|
||||
int i, j;
|
||||
int tinstno;
|
||||
int npos, npos2, pos[NREGS], pos2[NREGS];
|
||||
unsigned mincost, t;
|
||||
|
@ -844,8 +836,7 @@ unsigned codegen(byte* codep, int ply, int toplevel, unsigned costlimit, int for
|
|||
}
|
||||
case DO_INSTR:
|
||||
{
|
||||
register i;
|
||||
int n;
|
||||
int i, n;
|
||||
int tinstno;
|
||||
token_t token;
|
||||
int stringno;
|
||||
|
@ -933,7 +924,7 @@ unsigned codegen(byte* codep, int ply, int toplevel, unsigned costlimit, int for
|
|||
}
|
||||
case DO_TOKREPLACE:
|
||||
{
|
||||
register i;
|
||||
int i;
|
||||
int tinstno;
|
||||
int repllen;
|
||||
token_t reptoken[MAXREPLLEN];
|
||||
|
@ -969,8 +960,7 @@ unsigned codegen(byte* codep, int ply, int toplevel, unsigned costlimit, int for
|
|||
}
|
||||
case DO_EMREPLACE:
|
||||
{
|
||||
register i;
|
||||
int j;
|
||||
int i, j;
|
||||
int nodeno;
|
||||
result_t result[MAXEMREPLLEN];
|
||||
int emrepllen, eminstr;
|
||||
|
@ -1093,10 +1083,10 @@ doreturn:
|
|||
return (totalcost);
|
||||
}
|
||||
|
||||
readcodebytes()
|
||||
void readcodebytes(void)
|
||||
{
|
||||
#ifndef CODEINC
|
||||
register fd;
|
||||
int fd;
|
||||
extern int ncodebytes;
|
||||
|
||||
if ((fd = open("code", 0)) < 0)
|
||||
|
@ -1108,13 +1098,12 @@ readcodebytes()
|
|||
error("Short read from code");
|
||||
}
|
||||
close(fd);
|
||||
#endif
|
||||
#endif /* CODEINC */
|
||||
}
|
||||
|
||||
#ifdef TABLEDEBUG
|
||||
initlset(f) char* f;
|
||||
void initlset(char *f)
|
||||
{
|
||||
extern char* myalloc();
|
||||
|
||||
set_flag = f;
|
||||
if ((set_fd = open(f + 1, 2)) < 0)
|
||||
|
@ -1124,7 +1113,7 @@ initlset(f) char* f;
|
|||
read(set_fd, set_val, set_size);
|
||||
}
|
||||
|
||||
termlset()
|
||||
void termlset(void)
|
||||
{
|
||||
|
||||
if (set_fd)
|
||||
|
@ -1134,7 +1123,7 @@ termlset()
|
|||
close(set_fd);
|
||||
if (set_flag[0] == 'u')
|
||||
{
|
||||
register i;
|
||||
int i;
|
||||
|
||||
fprintf(stderr, "Unused code rules:\n\n");
|
||||
for (i = 0; i < 8 * set_size; i++)
|
||||
|
@ -1143,4 +1132,4 @@ termlset()
|
|||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif /* TABLEDEBUG */
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
static char rcsid[] = "$Id$";
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "assert.h"
|
||||
#include "param.h"
|
||||
#include "tables.h"
|
||||
#include "types.h"
|
||||
|
@ -35,7 +35,7 @@ static char rcsid[] = "$Id$";
|
|||
#define LLDEF LLEAF|LDEF
|
||||
#define RLDEF RLEAF|RDEF
|
||||
|
||||
char opdesc[] = {
|
||||
static const char opdesc[] = {
|
||||
0, /* EX_TOKFIELD */
|
||||
0, /* EX_ARG */
|
||||
0, /* EX_CON */
|
||||
|
@ -87,10 +87,8 @@ char opdesc[] = {
|
|||
#endif
|
||||
};
|
||||
|
||||
string salloc(),strcpy(),strcat();
|
||||
|
||||
string mycat(s1,s2) register string s1,s2; {
|
||||
register string s;
|
||||
static string mycat(string s1, string s2) {
|
||||
string s;
|
||||
|
||||
if (s1==0 || *s1=='\0') return(s2);
|
||||
if (s2==0 || *s2=='\0') return(s1);
|
||||
|
@ -101,7 +99,7 @@ string mycat(s1,s2) register string s1,s2; {
|
|||
return(s);
|
||||
}
|
||||
|
||||
string mystrcpy(s) register string s; {
|
||||
string mystrcpy(string s) {
|
||||
register string r;
|
||||
|
||||
r=salloc(strlen(s));
|
||||
|
@ -109,9 +107,9 @@ string mystrcpy(s) register string s; {
|
|||
return(r);
|
||||
}
|
||||
|
||||
char digstr[21][15];
|
||||
static char digstr[21][15];
|
||||
|
||||
string tostring(n) register word n; {
|
||||
string tostring(word n) {
|
||||
char buf[25];
|
||||
|
||||
if (n>=-20 && n<=20 && (n&1)==0) {
|
||||
|
@ -123,10 +121,9 @@ string tostring(n) register word n; {
|
|||
return(mystrcpy(buf));
|
||||
}
|
||||
|
||||
void
|
||||
compute(node, presult) register node_p node; register result_t *presult; {
|
||||
void compute(node_p node, result_t *presult) {
|
||||
result_t leaf1,leaf2;
|
||||
register token_p tp;
|
||||
token_p tp;
|
||||
int desc;
|
||||
long mask,tmp;
|
||||
int i,tmpreg;
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
*/
|
||||
/* $Id$ */
|
||||
|
||||
#include <cgg_cg.h> /* set_p, c3_p */
|
||||
|
||||
typedef struct cost {
|
||||
short ct_space;
|
||||
short ct_time;
|
||||
|
@ -69,3 +71,32 @@ typedef struct {
|
|||
int rl_n; /* number in list */
|
||||
int rl_list[NREGS];
|
||||
} rl_t,*rl_p;
|
||||
|
||||
/* gencode.c */
|
||||
void genstr(int);
|
||||
string ad2str(address_t);
|
||||
void gennl(void);
|
||||
void prtoken(token_p, int);
|
||||
#ifdef USE_TES
|
||||
void printlabel(int);
|
||||
#endif
|
||||
/* move.c */
|
||||
int move(token_p, token_p, int, int, unsigned);
|
||||
void setcc(token_p);
|
||||
int test(token_p, int, int, unsigned);
|
||||
/* subr.c */
|
||||
int match(token_p, set_p, int);
|
||||
void instance(int, token_p);
|
||||
int eqtoken(token_p, token_p);
|
||||
int distance(int);
|
||||
unsigned costcalc(cost_t);
|
||||
int ssize(int);
|
||||
int tsize(token_p);
|
||||
void tref(token_p, int);
|
||||
int in_stack(int);
|
||||
#ifdef MAXSPLIT
|
||||
int split(token_p, int *, int, int);
|
||||
#endif
|
||||
unsigned docoerc(token_p, c3_p, int, int, int);
|
||||
unsigned stackupto(token_p, int, int);
|
||||
c3_p findcoerc(token_p, set_p);
|
||||
|
|
|
@ -2,15 +2,15 @@
|
|||
static char rcsid[] = "$Id$";
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include "assert.h"
|
||||
#include "equiv.h"
|
||||
#include "param.h"
|
||||
#include "tables.h"
|
||||
#include "types.h"
|
||||
#include <cgg_cg.h>
|
||||
#include "data.h"
|
||||
#include "equiv.h"
|
||||
#include "result.h"
|
||||
#include "extern.h"
|
||||
|
||||
|
@ -21,21 +21,18 @@ static char rcsid[] = "$Id$";
|
|||
* Author: Hans van Staveren
|
||||
*/
|
||||
|
||||
extern string myalloc();
|
||||
static int rar[MAXCREG];
|
||||
static rl_p *lar;
|
||||
static int maxindex;
|
||||
static int regclass[NREGS];
|
||||
static struct perm *perms;
|
||||
|
||||
int rar[MAXCREG];
|
||||
rl_p *lar;
|
||||
int maxindex;
|
||||
int regclass[NREGS];
|
||||
struct perm *perms;
|
||||
static void permute(int);
|
||||
|
||||
void permute();
|
||||
|
||||
struct perm *
|
||||
tuples(regls,nregneeded) rl_p *regls; {
|
||||
struct perm *tuples(rl_p *regls, int nregneeded) {
|
||||
int class=0;
|
||||
register i,j;
|
||||
register struct reginfo *rp;
|
||||
int i,j;
|
||||
struct reginfo *rp;
|
||||
|
||||
/*
|
||||
* First compute equivalence classes of registers.
|
||||
|
@ -66,11 +63,10 @@ tuples(regls,nregneeded) rl_p *regls; {
|
|||
return(perms);
|
||||
}
|
||||
|
||||
void
|
||||
permute(index) {
|
||||
register struct perm *pp;
|
||||
register rl_p rlp;
|
||||
register i,j;
|
||||
static void permute(int index) {
|
||||
struct perm *pp;
|
||||
rl_p rlp;
|
||||
int i,j;
|
||||
|
||||
if (index == maxindex) {
|
||||
for (pp=perms; pp != 0; pp=pp->p_next) {
|
||||
|
|
|
@ -10,3 +10,5 @@ struct perm {
|
|||
struct perm *p_next;
|
||||
int p_rar[MAXCREG];
|
||||
};
|
||||
|
||||
struct perm *tuples(rl_p *, int);
|
||||
|
|
|
@ -54,6 +54,3 @@ extern int *rvnumbers[]; /* lists of numbers */
|
|||
#endif
|
||||
|
||||
extern FILE *codefile;
|
||||
|
||||
extern void error(const char *s, ...);
|
||||
extern void fatal(const char *s, ...);
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
static char rcsid2[] = "$Id$";
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "assert.h"
|
||||
#include <em_spec.h>
|
||||
#include <em_pseu.h>
|
||||
#include <em_flag.h>
|
||||
|
@ -17,6 +17,7 @@ static char rcsid2[] = "$Id$";
|
|||
#include "types.h"
|
||||
#include <cgg_cg.h>
|
||||
#include "data.h"
|
||||
#include "glosym.h"
|
||||
#include "result.h"
|
||||
#ifdef REGVARS
|
||||
#include "regvar.h"
|
||||
|
@ -55,50 +56,60 @@ Read the documentation.
|
|||
#define SEGROM 2
|
||||
#define SEGBSS 3
|
||||
|
||||
long con();
|
||||
|
||||
#define get8() getc(emfile)
|
||||
|
||||
FILE *emfile;
|
||||
static FILE *emfile;
|
||||
|
||||
int nextispseu,savetab1;
|
||||
int opcode;
|
||||
int offtyp;
|
||||
long argval;
|
||||
int dlbval;
|
||||
char *str,argstr[128],labstr[128];
|
||||
unsigned int maxstrsiz;
|
||||
int strsiz;
|
||||
int holno=0;
|
||||
int procno=0;
|
||||
int curseg= -1;
|
||||
int part_size=0;
|
||||
word part_word=0;
|
||||
static int nextispseu,savetab1;
|
||||
static int opcode;
|
||||
static int offtyp;
|
||||
static long argval;
|
||||
static int dlbval;
|
||||
static char *str,argstr[128],labstr[128];
|
||||
static unsigned int maxstrsiz;
|
||||
static int strsiz;
|
||||
static int holno=0;
|
||||
static int procno=0;
|
||||
static int curseg= -1;
|
||||
static int part_size=0;
|
||||
static word part_word=0;
|
||||
#ifdef REGVARS
|
||||
int regallowed=0;
|
||||
static int regallowed=0;
|
||||
#endif
|
||||
|
||||
extern char em_flag[];
|
||||
extern short em_ptyp[];
|
||||
extern double atof();
|
||||
|
||||
/* machine dependent */
|
||||
void con_part(int, word);
|
||||
void con_mult(word);
|
||||
void con_float(void);
|
||||
void prolog(full nlocals);
|
||||
void mes();
|
||||
void bss();
|
||||
void savelab();
|
||||
void dumplab();
|
||||
void part_flush();
|
||||
void xdumplab();
|
||||
void switchseg();
|
||||
void mes(word);
|
||||
|
||||
static int getarg(int);
|
||||
static int table1(void);
|
||||
static int table2(void);
|
||||
static int table3(int);
|
||||
static int get16(void);
|
||||
static long get32(void);
|
||||
static void getstring(void);
|
||||
static string strarg(int);
|
||||
static void bss(full, int, int);
|
||||
static long con(int);
|
||||
static void switchseg(int);
|
||||
static void savelab(void);
|
||||
static void dumplab(void);
|
||||
static void xdumplab(void);
|
||||
static void part_flush(void);
|
||||
static string holstr(word);
|
||||
|
||||
/* Own version of atol that continues computing on overflow.
|
||||
We don't know that about the ANSI C one.
|
||||
*/
|
||||
long our_atol(s)
|
||||
register char *s;
|
||||
{
|
||||
register long total = 0;
|
||||
register unsigned digit;
|
||||
static long our_atol(char *s) {
|
||||
long total = 0;
|
||||
unsigned digit;
|
||||
int minus = 0;
|
||||
|
||||
while (*s == ' ' || *s == '\t') s++;
|
||||
|
@ -117,14 +128,7 @@ register char *s;
|
|||
|
||||
#define sp_cstx sp_cst2
|
||||
|
||||
string tostring();
|
||||
string holstr();
|
||||
string strarg();
|
||||
string mystrcpy();
|
||||
string myalloc();
|
||||
long get32();
|
||||
|
||||
in_init(filename) char *filename; {
|
||||
void in_init(char *filename) {
|
||||
|
||||
emfile = stdin;
|
||||
if (filename && (emfile=freopen(filename,"r",stdin))==NULL)
|
||||
|
@ -134,19 +138,18 @@ in_init(filename) char *filename; {
|
|||
str = myalloc(maxstrsiz=256);
|
||||
}
|
||||
|
||||
in_start() {
|
||||
void in_start(void) {
|
||||
#ifdef modhead
|
||||
fprintf(codefile,"%s",modhead) ;
|
||||
#endif
|
||||
}
|
||||
|
||||
in_finish() {
|
||||
static void in_finish(void) {
|
||||
}
|
||||
|
||||
void
|
||||
fillemlines() {
|
||||
register int t,i;
|
||||
register struct emline *lp;
|
||||
void fillemlines(void) {
|
||||
int t,i;
|
||||
struct emline *lp;
|
||||
|
||||
while ((emlines+nemlines)-emp<MAXEMLINES-5) {
|
||||
assert(nemlines<MAXEMLINES);
|
||||
|
@ -236,18 +239,17 @@ fillemlines() {
|
|||
|
||||
void
|
||||
dopseudo() {
|
||||
register b,t;
|
||||
register full n;
|
||||
register long save;
|
||||
int b,t;
|
||||
full n;
|
||||
long save;
|
||||
word romcont[MAXROM+1];
|
||||
int nromwords;
|
||||
int rombit,rommask;
|
||||
unsigned stackupto();
|
||||
|
||||
if (nextispseu==0 || nemlines>0)
|
||||
error("No table entry for %d",emlines[0].em_instr);
|
||||
nextispseu=0;
|
||||
switch(savetab1) {
|
||||
switch (savetab1) {
|
||||
#ifndef USE_TES
|
||||
case sp_ilb1:
|
||||
case sp_ilb2:
|
||||
|
@ -439,8 +441,8 @@ dopseudo() {
|
|||
|
||||
/* ----- input ----- */
|
||||
|
||||
int getarg(typset) {
|
||||
register t,argtyp;
|
||||
static int getarg(int typset) {
|
||||
int t,argtyp;
|
||||
|
||||
argtyp = t = table2();
|
||||
if (t == EOF)
|
||||
|
@ -452,8 +454,8 @@ int getarg(typset) {
|
|||
return(argtyp);
|
||||
}
|
||||
|
||||
int table1() {
|
||||
register i;
|
||||
static int table1(void) {
|
||||
int i;
|
||||
|
||||
i = get8();
|
||||
if (i < sp_fmnem+sp_nmnem && i >= sp_fmnem) {
|
||||
|
@ -471,8 +473,8 @@ int table1() {
|
|||
return(table3(i));
|
||||
}
|
||||
|
||||
int table2() {
|
||||
register i;
|
||||
static int table2(void) {
|
||||
int i;
|
||||
|
||||
i = get8();
|
||||
if (i < sp_fcst0+sp_ncst0 && i >= sp_fcst0) {
|
||||
|
@ -482,7 +484,7 @@ int table2() {
|
|||
return(table3(i));
|
||||
}
|
||||
|
||||
int table3(i) {
|
||||
static int table3(int i) {
|
||||
word consiz;
|
||||
|
||||
switch(i) {
|
||||
|
@ -525,8 +527,8 @@ int table3(i) {
|
|||
return(i);
|
||||
}
|
||||
|
||||
int get16() {
|
||||
register int l_byte, h_byte;
|
||||
static int get16(void) {
|
||||
int l_byte, h_byte;
|
||||
|
||||
l_byte = get8();
|
||||
h_byte = get8();
|
||||
|
@ -534,9 +536,9 @@ int get16() {
|
|||
return l_byte | (h_byte*256) ;
|
||||
}
|
||||
|
||||
long get32() {
|
||||
register long l;
|
||||
register int h_byte;
|
||||
static long get32(void) {
|
||||
long l;
|
||||
int h_byte;
|
||||
|
||||
l = get8();
|
||||
l |= ((unsigned) get8())*256 ;
|
||||
|
@ -546,9 +548,9 @@ long get32() {
|
|||
return l | (h_byte*256L*256*256L) ;
|
||||
}
|
||||
|
||||
getstring() {
|
||||
register char *p;
|
||||
register n;
|
||||
static void getstring(void) {
|
||||
char *p;
|
||||
int n;
|
||||
|
||||
getarg(cst_ptyp);
|
||||
if (argval < 0)
|
||||
|
@ -565,8 +567,8 @@ getstring() {
|
|||
*p++ = '\0';
|
||||
}
|
||||
|
||||
char *strarg(t) {
|
||||
register char *p;
|
||||
static string strarg(int t) {
|
||||
char *p;
|
||||
|
||||
switch (t) {
|
||||
case sp_ilb1:
|
||||
|
@ -613,9 +615,8 @@ char *strarg(t) {
|
|||
return(mystrcpy(argstr));
|
||||
}
|
||||
|
||||
void
|
||||
bss(n,t,b) full n; {
|
||||
register long s = 0;
|
||||
static void bss(full n, int t, int b) {
|
||||
long s = 0;
|
||||
|
||||
if (n % TEM_WSIZE)
|
||||
fatal("bad BSS size");
|
||||
|
@ -637,8 +638,8 @@ bss(n,t,b) full n; {
|
|||
fatal("bad BSS initializer");
|
||||
}
|
||||
|
||||
long con(t) {
|
||||
register i;
|
||||
static long con(int t) {
|
||||
int i;
|
||||
|
||||
strarg(t);
|
||||
switch (t) {
|
||||
|
@ -682,12 +683,11 @@ long con(t) {
|
|||
|
||||
extern char *segname[];
|
||||
|
||||
swtxt() {
|
||||
void swtxt(void) {
|
||||
switchseg(SEGTXT);
|
||||
}
|
||||
|
||||
void
|
||||
switchseg(s) {
|
||||
static void switchseg(int s) {
|
||||
|
||||
if (s == curseg)
|
||||
return;
|
||||
|
@ -696,8 +696,7 @@ switchseg(s) {
|
|||
fprintf(codefile,"%s\n",segname[s]);
|
||||
}
|
||||
|
||||
void
|
||||
savelab() {
|
||||
static void savelab(void) {
|
||||
register char *p,*q;
|
||||
|
||||
part_flush();
|
||||
|
@ -711,8 +710,7 @@ savelab() {
|
|||
;
|
||||
}
|
||||
|
||||
void
|
||||
dumplab() {
|
||||
static void dumplab(void) {
|
||||
|
||||
if (labstr[0] == 0)
|
||||
return;
|
||||
|
@ -721,8 +719,7 @@ dumplab() {
|
|||
labstr[0] = 0;
|
||||
}
|
||||
|
||||
void
|
||||
xdumplab() {
|
||||
static void xdumplab(void) {
|
||||
|
||||
if (labstr[0] == 0)
|
||||
return;
|
||||
|
@ -730,8 +727,7 @@ xdumplab() {
|
|||
newdlb(labstr);
|
||||
}
|
||||
|
||||
void
|
||||
part_flush() {
|
||||
static void part_flush(void) {
|
||||
|
||||
/*
|
||||
* Each new data fragment and each data label starts at
|
||||
|
@ -744,7 +740,7 @@ part_flush() {
|
|||
part_word = 0;
|
||||
}
|
||||
|
||||
string holstr(n) word n; {
|
||||
static string holstr(word n) {
|
||||
|
||||
sprintf(str,hol_off,n,holno);
|
||||
return(mystrcpy(str));
|
||||
|
|
|
@ -2,8 +2,9 @@
|
|||
static char rcsid[] = "$Id$";
|
||||
#endif
|
||||
|
||||
#include "assert.h"
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h> /* isatty */
|
||||
#include "param.h"
|
||||
#include "tables.h"
|
||||
#include "types.h"
|
||||
|
@ -22,12 +23,9 @@ static char rcsid[] = "$Id$";
|
|||
* Author: Hans van Staveren
|
||||
*/
|
||||
|
||||
string mystrcpy();
|
||||
|
||||
FILE *codefile;
|
||||
extern FILE *freopen();
|
||||
|
||||
out_init(filename) char *filename; {
|
||||
void out_init(char *filename) {
|
||||
|
||||
#ifndef NDEBUG
|
||||
static char stderrbuff[BUFSIZ];
|
||||
|
@ -48,7 +46,7 @@ out_init(filename) char *filename; {
|
|||
#endif
|
||||
}
|
||||
|
||||
out_finish() {
|
||||
void out_finish(void) {
|
||||
|
||||
#ifndef NDEBUG
|
||||
if (Debug)
|
||||
|
@ -61,18 +59,18 @@ out_finish() {
|
|||
#endif
|
||||
}
|
||||
|
||||
tstoutput() {
|
||||
void tstoutput(void) {
|
||||
|
||||
if (ferror(codefile))
|
||||
error("Write error on output");
|
||||
}
|
||||
|
||||
genstr(stringno) {
|
||||
void genstr(int stringno) {
|
||||
|
||||
fputs(codestrings[stringno],codefile);
|
||||
}
|
||||
|
||||
string ad2str(ad) address_t ad; {
|
||||
string ad2str(address_t ad) {
|
||||
static char buf[100];
|
||||
|
||||
if (ad.ea_str==0)
|
||||
|
@ -87,7 +85,7 @@ string ad2str(ad) address_t ad; {
|
|||
return(mystrcpy(buf));
|
||||
}
|
||||
|
||||
praddr(ad) address_t ad; {
|
||||
static void praddr(address_t ad) {
|
||||
|
||||
if (ad.ea_str==0 || *(ad.ea_str) == '\0')
|
||||
fprintf(codefile,WRD_FMT,ad.ea_off);
|
||||
|
@ -104,15 +102,14 @@ praddr(ad) address_t ad; {
|
|||
}
|
||||
}
|
||||
|
||||
gennl() {
|
||||
void gennl(void) {
|
||||
putc('\n',codefile);
|
||||
}
|
||||
|
||||
void
|
||||
prtoken(tp,leadingchar) token_p tp; {
|
||||
register c;
|
||||
register char *code;
|
||||
register tkdef_p tdp;
|
||||
void prtoken(token_p tp, int leadingchar) {
|
||||
int c;
|
||||
char *code;
|
||||
tkdef_p tdp;
|
||||
|
||||
putc(leadingchar,codefile);
|
||||
if (tp->t_token == -1) {
|
||||
|
@ -145,9 +142,7 @@ prtoken(tp,leadingchar) token_p tp; {
|
|||
}
|
||||
|
||||
#ifdef USE_TES
|
||||
printlabel(labnum)
|
||||
int labnum;
|
||||
{
|
||||
void printlabel(int labnum) {
|
||||
newilb(dollar[labnum].e_v.e_addr.ea_str);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -16,13 +16,11 @@ static char rcsid[] = "$Id$";
|
|||
* Author: Hans van Staveren
|
||||
*/
|
||||
|
||||
extern string myalloc();
|
||||
static glosym_p glolist= (glosym_p) 0;
|
||||
|
||||
glosym_p glolist= (glosym_p) 0;
|
||||
|
||||
enterglo(name,romp) string name; word *romp; {
|
||||
register glosym_p gp;
|
||||
register i;
|
||||
void enterglo(string name, word *romp) {
|
||||
glosym_p gp;
|
||||
int i;
|
||||
|
||||
gp = (glosym_p) myalloc(sizeof *gp);
|
||||
gp->gl_next = glolist;
|
||||
|
@ -33,8 +31,8 @@ enterglo(name,romp) string name; word *romp; {
|
|||
glolist = gp;
|
||||
}
|
||||
|
||||
glosym_p lookglo(name) string name; {
|
||||
register glosym_p gp;
|
||||
glosym_p lookglo(string name) {
|
||||
glosym_p gp;
|
||||
|
||||
for (gp=glolist;gp != (glosym_p) 0; gp=gp->gl_next)
|
||||
if (strcmp(gp->gl_name,name)==0)
|
||||
|
|
|
@ -10,4 +10,5 @@ typedef struct glosym {
|
|||
word gl_rom[MAXROM+1];
|
||||
} glosym_t,*glosym_p;
|
||||
|
||||
glosym_p lookglo();
|
||||
void enterglo(string, word *);
|
||||
glosym_p lookglo(string);
|
||||
|
|
|
@ -5,12 +5,10 @@
|
|||
#include "label.h"
|
||||
|
||||
static label_p label_list = (label_p)0;
|
||||
extern char *myalloc();
|
||||
|
||||
void
|
||||
add_label(num, height, flth)
|
||||
void add_label(num, height, flth)
|
||||
{
|
||||
register label_p lbl = (label_p)0;
|
||||
label_p lbl = (label_p)0;
|
||||
|
||||
if (height <= 0) return;
|
||||
if (flth != TRUE && flth != FALSE)
|
||||
|
@ -24,10 +22,9 @@ add_label(num, height, flth)
|
|||
label_list = lbl;
|
||||
}
|
||||
|
||||
label_p get_label(num)
|
||||
register word num;
|
||||
label_p get_label(word num)
|
||||
{
|
||||
register label_p tmp = label_list;
|
||||
label_p tmp = label_list;
|
||||
|
||||
while (tmp != (label_p)0) {
|
||||
if (tmp->lb_number == num) return tmp;
|
||||
|
@ -36,7 +33,7 @@ register word num;
|
|||
return (label_p)0;
|
||||
}
|
||||
|
||||
kill_labels()
|
||||
void kill_labels(void)
|
||||
{
|
||||
label_p tmp;
|
||||
|
||||
|
|
|
@ -14,4 +14,6 @@ struct label {
|
|||
short lb_fallthrough;
|
||||
};
|
||||
|
||||
extern label_p get_label();
|
||||
void add_label(int, int, int);
|
||||
label_p get_label(word);
|
||||
void kill_labels(void);
|
||||
|
|
|
@ -2,8 +2,10 @@
|
|||
static char rcsid[] = "$Id$";
|
||||
#endif
|
||||
|
||||
#include <stdlib.h> /* atoi */
|
||||
#include "param.h"
|
||||
#include "tables.h"
|
||||
#include "types.h"
|
||||
#include "mach.h"
|
||||
|
||||
/*
|
||||
|
@ -14,18 +16,18 @@ static char rcsid[] = "$Id$";
|
|||
*/
|
||||
|
||||
char *progname;
|
||||
extern char startupcode[];
|
||||
extern unsigned codegen();
|
||||
extern byte startupcode[]; /* codegen.c */
|
||||
int maxply=1;
|
||||
#ifndef NDEBUG
|
||||
int Debug=0;
|
||||
char *strtdebug="";
|
||||
#endif
|
||||
|
||||
main(argc,argv) char **argv; {
|
||||
register unsigned n;
|
||||
extern unsigned cc1,cc2,cc3,cc4;
|
||||
unsigned ggd();
|
||||
static unsigned ggd(unsigned, unsigned);
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
unsigned n;
|
||||
extern unsigned cc1,cc2,cc3,cc4; /* tables.c */
|
||||
|
||||
progname = argv[0];
|
||||
while (--argc && **++argv == '-') {
|
||||
|
@ -84,8 +86,8 @@ main(argc,argv) char **argv; {
|
|||
error("Bombed out of codegen");
|
||||
}
|
||||
|
||||
unsigned ggd(a,b) register unsigned a,b; {
|
||||
register unsigned c;
|
||||
unsigned ggd(unsigned a, unsigned b) {
|
||||
unsigned c;
|
||||
|
||||
do {
|
||||
c = a%b; a=b; b=c;
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
static char rcsid[] = "$Id$";
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include "assert.h"
|
||||
#include "param.h"
|
||||
#include "tables.h"
|
||||
#include "types.h"
|
||||
|
@ -20,13 +20,12 @@ static char rcsid[] = "$Id$";
|
|||
* Author: Hans van Staveren
|
||||
*/
|
||||
|
||||
move(tp1,tp2,ply,toplevel,maxcost) token_p tp1,tp2; unsigned maxcost; {
|
||||
register move_p mp;
|
||||
int move(token_p tp1, token_p tp2, int ply, int toplevel, unsigned maxcost) {
|
||||
move_p mp;
|
||||
unsigned t;
|
||||
register struct reginfo *rp;
|
||||
register byte *tdpb;
|
||||
struct reginfo *rp;
|
||||
byte *tdpb;
|
||||
int i;
|
||||
unsigned codegen();
|
||||
|
||||
if (eqtoken(tp1,tp2))
|
||||
return(0);
|
||||
|
@ -97,15 +96,14 @@ move(tp1,tp2,ply,toplevel,maxcost) token_p tp1,tp2; unsigned maxcost; {
|
|||
|
||||
#define cocoreg machregs[0].r_contents
|
||||
|
||||
setcc(tp) token_p tp; {
|
||||
void setcc(token_p tp) {
|
||||
|
||||
cocoreg = *tp;
|
||||
}
|
||||
|
||||
test(tp,ply,toplevel,maxcost) token_p tp; unsigned maxcost; {
|
||||
register test_p mp;
|
||||
int test(token_p tp, int ply, int toplevel, unsigned maxcost) {
|
||||
test_p mp;
|
||||
unsigned t;
|
||||
unsigned codegen();
|
||||
|
||||
if (cocoreg.t_token!=0) {
|
||||
if (eqtoken(tp,&cocoreg))
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
static char rcsid[] = "$Id$";
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <em_spec.h>
|
||||
#include <em_flag.h>
|
||||
#include "assert.h"
|
||||
#include "param.h"
|
||||
#include "tables.h"
|
||||
#include "types.h"
|
||||
|
@ -27,8 +27,10 @@ static char rcsid[] = "$Id$";
|
|||
extern char em_mnem[][4];
|
||||
#endif
|
||||
|
||||
byte *trypat(bp,len) register byte *bp; {
|
||||
register patlen,i;
|
||||
static int argtyp(int);
|
||||
|
||||
static byte *trypat(byte *bp, int len) {
|
||||
int patlen,i;
|
||||
result_t result;
|
||||
|
||||
getint(patlen,bp);
|
||||
|
@ -39,7 +41,7 @@ byte *trypat(bp,len) register byte *bp; {
|
|||
if (patlen != len)
|
||||
return(0);
|
||||
}
|
||||
for(i=0;i<patlen;i++)
|
||||
for (i=0;i<patlen;i++)
|
||||
if (emp[i].em_instr != (*bp++&BMASK))
|
||||
return(0);
|
||||
for (i=0;i<patlen;i++)
|
||||
|
@ -85,7 +87,7 @@ byte *trypat(bp,len) register byte *bp; {
|
|||
|
||||
extern char em_flag[];
|
||||
|
||||
argtyp(mn) {
|
||||
static int argtyp(int mn) {
|
||||
|
||||
/* op_lab is a special opcode which represents a label definition. It's
|
||||
* not actually a real EM instruction. Therefore if we try to look it
|
||||
|
@ -94,7 +96,7 @@ argtyp(mn) {
|
|||
if (mn == op_lab)
|
||||
return EV_UNDEF;
|
||||
|
||||
switch(em_flag[mn-sp_fmnem]&EM_PAR) {
|
||||
switch (em_flag[mn-sp_fmnem]&EM_PAR) {
|
||||
case PAR_W:
|
||||
case PAR_S:
|
||||
case PAR_Z:
|
||||
|
@ -110,13 +112,13 @@ argtyp(mn) {
|
|||
}
|
||||
}
|
||||
|
||||
byte *nextem(toplevel) {
|
||||
register i;
|
||||
byte *nextem(int toplevel) {
|
||||
int i;
|
||||
short hash[3];
|
||||
register byte *bp;
|
||||
byte *bp;
|
||||
byte *cp;
|
||||
int index;
|
||||
register struct emline *ep;
|
||||
struct emline *ep;
|
||||
|
||||
if (toplevel) {
|
||||
if (nemlines && emp>emlines) {
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
static char rcsid[] = "$Id$";
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include "assert.h"
|
||||
#include "param.h"
|
||||
#include "tables.h"
|
||||
#include "types.h"
|
||||
|
@ -20,10 +20,10 @@ static char rcsid[] = "$Id$";
|
|||
* Author: Hans van Staveren
|
||||
*/
|
||||
|
||||
chrefcount(regno,amount,tflag) {
|
||||
register struct reginfo *rp;
|
||||
void chrefcount(int regno, int amount, int tflag) {
|
||||
struct reginfo *rp;
|
||||
#if MAXMEMBERS != 0
|
||||
register i, tmp;
|
||||
int i, tmp;
|
||||
#endif
|
||||
|
||||
rp= &machregs[regno];
|
||||
|
@ -42,10 +42,10 @@ chrefcount(regno,amount,tflag) {
|
|||
#endif
|
||||
}
|
||||
|
||||
getrefcount(regno, tflag) {
|
||||
register struct reginfo *rp;
|
||||
int getrefcount(int regno, int tflag) {
|
||||
struct reginfo *rp;
|
||||
#if MAXMEMBERS != 0
|
||||
register i,maxcount, tmp;
|
||||
int i,maxcount, tmp;
|
||||
#endif
|
||||
|
||||
rp= &machregs[regno];
|
||||
|
@ -66,10 +66,10 @@ getrefcount(regno, tflag) {
|
|||
#endif
|
||||
}
|
||||
|
||||
erasereg(regno) {
|
||||
register struct reginfo *rp = &machregs[regno];
|
||||
register int i;
|
||||
register byte *tdpb;
|
||||
void erasereg(int regno) {
|
||||
struct reginfo *rp = &machregs[regno];
|
||||
int i;
|
||||
byte *tdpb;
|
||||
|
||||
#if MAXMEMBERS==0
|
||||
rp->r_contents.t_token = 0;
|
||||
|
@ -108,7 +108,7 @@ erasereg(regno) {
|
|||
}
|
||||
#else
|
||||
extern short clashlist[];
|
||||
register short *sp = &clashlist[rp->r_iclash];
|
||||
short *sp = &clashlist[rp->r_iclash];
|
||||
|
||||
rp->r_contents.t_token = 0;
|
||||
while (*sp) {
|
||||
|
@ -151,9 +151,9 @@ erasereg(regno) {
|
|||
#endif
|
||||
}
|
||||
|
||||
cleanregs() {
|
||||
register struct reginfo *rp;
|
||||
register i;
|
||||
void cleanregs(void) {
|
||||
struct reginfo *rp;
|
||||
int i;
|
||||
|
||||
for (rp=machregs;rp<machregs+NREGS;rp++) {
|
||||
rp->r_contents.t_token = 0;
|
||||
|
@ -163,9 +163,9 @@ cleanregs() {
|
|||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
inctcount(regno) {
|
||||
register struct reginfo *rp;
|
||||
register i;
|
||||
static void inctcount(int regno) {
|
||||
struct reginfo *rp;
|
||||
int i;
|
||||
|
||||
rp = &machregs[regno];
|
||||
#if MAXMEMBERS!=0
|
||||
|
@ -181,10 +181,10 @@ inctcount(regno) {
|
|||
#endif
|
||||
}
|
||||
|
||||
chkregs() {
|
||||
register struct reginfo *rp;
|
||||
register token_p tp;
|
||||
register byte *tdpb;
|
||||
void chkregs(void) {
|
||||
struct reginfo *rp;
|
||||
token_p tp;
|
||||
byte *tdpb;
|
||||
int i;
|
||||
|
||||
for (rp=machregs+1;rp<machregs+NREGS;rp++) {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include "assert.h"
|
||||
#include "param.h"
|
||||
#include "tables.h"
|
||||
|
||||
|
@ -24,12 +24,10 @@ static char rcsid[] = "$Id$";
|
|||
*
|
||||
* Author: Hans van Staveren
|
||||
*/
|
||||
extern string myalloc();
|
||||
struct regvar *rvlist;
|
||||
static struct regvar *rvlist;
|
||||
|
||||
struct regvar *
|
||||
linkreg(long of, int sz, int tp, int sc) {
|
||||
register struct regvar *rvlp;
|
||||
struct regvar *linkreg(long of, int sz, int tp, int sc) {
|
||||
struct regvar *rvlp;
|
||||
|
||||
rvlp= (struct regvar *) myalloc(sizeof *rvlp);
|
||||
rvlp->rv_next = rvlist;
|
||||
|
@ -42,11 +40,10 @@ linkreg(long of, int sz, int tp, int sc) {
|
|||
return(rvlp);
|
||||
}
|
||||
|
||||
void
|
||||
tryreg(struct regvar *rvlp, int typ) {
|
||||
void tryreg(struct regvar *rvlp, int typ) {
|
||||
int score;
|
||||
register i;
|
||||
register struct regassigned *ra;
|
||||
int i;
|
||||
struct regassigned *ra;
|
||||
struct regvar *save;
|
||||
|
||||
if (typ != reg_any && nregvar[typ]!=0) {
|
||||
|
@ -100,8 +97,7 @@ tryreg(struct regvar *rvlp, int typ) {
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
fixregvars(int saveall) {
|
||||
void fixregvars(int saveall) {
|
||||
struct reginfo *rp, *rp2;
|
||||
struct regvar *rv;
|
||||
int i, regno, rvtyp;
|
||||
|
@ -146,9 +142,8 @@ fixregvars(int saveall) {
|
|||
f_regsave();
|
||||
}
|
||||
|
||||
int
|
||||
isregvar(long off) {
|
||||
register struct regvar *rvlp;
|
||||
int isregvar(long off) {
|
||||
struct regvar *rvlp;
|
||||
|
||||
for(rvlp=rvlist;rvlp!=0;rvlp=rvlp->rv_next)
|
||||
if(rvlp->rv_off == off)
|
||||
|
@ -157,8 +152,7 @@ isregvar(long off) {
|
|||
}
|
||||
|
||||
#ifdef REGLAP
|
||||
int
|
||||
isregvar_size(long off, int size) {
|
||||
int isregvar_size(long off, int size) {
|
||||
int regno = isregvar(off);
|
||||
/*
|
||||
* A reg_float may have two sizes. If this register has the
|
||||
|
@ -176,29 +170,27 @@ isregvar_size(long off, int size) {
|
|||
}
|
||||
#endif /* REGLAP */
|
||||
|
||||
int
|
||||
isregtyp(long off) {
|
||||
register struct regvar *rvlp;
|
||||
int isregtyp(long off) {
|
||||
struct regvar *rvlp;
|
||||
|
||||
for(rvlp=rvlist;rvlp!=0;rvlp=rvlp->rv_next)
|
||||
if(rvlp->rv_off == off)
|
||||
for (rvlp=rvlist;rvlp!=0;rvlp=rvlp->rv_next)
|
||||
if (rvlp->rv_off == off)
|
||||
return(rvlp->rv_reg ? rvlp->rv_type+1 : 0);
|
||||
return(-1);
|
||||
}
|
||||
|
||||
void
|
||||
unlinkregs(void) {
|
||||
register struct regvar *rvlp,*t;
|
||||
register struct regassigned *ra;
|
||||
void unlinkregs(void) {
|
||||
struct regvar *rvlp,*t;
|
||||
struct regassigned *ra;
|
||||
int rvtyp,i;
|
||||
|
||||
for(rvlp=rvlist;rvlp!=0;rvlp=t) {
|
||||
for (rvlp=rvlist;rvlp!=0;rvlp=t) {
|
||||
t=rvlp->rv_next;
|
||||
myfree((string)rvlp);
|
||||
}
|
||||
rvlist=0;
|
||||
for (rvtyp=reg_any;rvtyp<=reg_float;rvtyp++) {
|
||||
for(i=0;i<nregvar[rvtyp];i++) {
|
||||
for (i=0;i<nregvar[rvtyp];i++) {
|
||||
ra= ®assigned[rvtyp][i];
|
||||
ra->ra_rv = 0;
|
||||
ra->ra_score = 0;
|
||||
|
|
|
@ -18,7 +18,6 @@ struct regassigned {
|
|||
int ra_score;
|
||||
};
|
||||
|
||||
extern struct regvar *rvlist;
|
||||
extern int nregvar[];
|
||||
extern struct regassigned *regassigned[];
|
||||
|
||||
|
@ -37,3 +36,10 @@ void unlinkregs(void);
|
|||
#else
|
||||
#define PICK_REGVAR(off, size) isregvar(off)
|
||||
#endif
|
||||
|
||||
/* machine dependent */
|
||||
int regscore(long, int, int, int, int);
|
||||
void i_regsave(void);
|
||||
void regsave(const char *, long, int);
|
||||
void f_regsave(void);
|
||||
void regreturn(void);
|
||||
|
|
|
@ -19,3 +19,6 @@ struct result {
|
|||
#define EV_ADDR 3
|
||||
|
||||
typedef struct result result_t;
|
||||
|
||||
/* compute.c */
|
||||
void compute(node_p, result_t *);
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
static char rcsid[] = "$Id$";
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include "assert.h"
|
||||
#include "param.h"
|
||||
#include "tables.h"
|
||||
#include "types.h"
|
||||
|
@ -32,10 +32,10 @@ static char rcsid[] = "$Id$";
|
|||
char *stab[MAXSTAB];
|
||||
int nstab=0;
|
||||
|
||||
void chkstr();
|
||||
static void chkstr(string, char *);
|
||||
|
||||
string myalloc(size) {
|
||||
register string p;
|
||||
string p;
|
||||
|
||||
p = (string) calloc((unsigned)size, 1);
|
||||
if (p==0)
|
||||
|
@ -43,21 +43,21 @@ string myalloc(size) {
|
|||
return(p);
|
||||
}
|
||||
|
||||
myfree(p) string p; {
|
||||
void myfree(string p) {
|
||||
|
||||
free(p);
|
||||
}
|
||||
|
||||
popstr(nnstab) {
|
||||
register i;
|
||||
void popstr(int nnstab) {
|
||||
int i;
|
||||
|
||||
for (i=nnstab;i<nstab;i++)
|
||||
myfree(stab[i]);
|
||||
nstab = nnstab;
|
||||
}
|
||||
|
||||
char *salloc(size) {
|
||||
register char *p;
|
||||
char *salloc(int size) {
|
||||
char *p;
|
||||
|
||||
if (nstab==MAXSTAB)
|
||||
fatal("String table overflow");
|
||||
|
@ -66,7 +66,9 @@ char *salloc(size) {
|
|||
return(p);
|
||||
}
|
||||
|
||||
compar(p1,p2) char **p1,**p2; {
|
||||
static int compar(const void *v1, const void *v2) {
|
||||
char *const *p1 = v1;
|
||||
char *const *p2 = v2;
|
||||
|
||||
assert(*p1 != *p2);
|
||||
if (*p1 < *p2)
|
||||
|
@ -74,14 +76,13 @@ compar(p1,p2) char **p1,**p2; {
|
|||
return(1);
|
||||
}
|
||||
|
||||
void
|
||||
garbage_collect() {
|
||||
register i;
|
||||
void garbage_collect(void) {
|
||||
int i;
|
||||
struct emline *emlp;
|
||||
token_p tp;
|
||||
tkdef_p tdp;
|
||||
struct reginfo *rp;
|
||||
register char **fillp,**scanp;
|
||||
char **fillp,**scanp;
|
||||
char used[MAXSTAB]; /* could be bitarray */
|
||||
|
||||
if (nstab<THRESHOLD)
|
||||
|
@ -89,7 +90,7 @@ garbage_collect() {
|
|||
qsort((char *)stab,nstab,sizeof (char *),compar);
|
||||
for (i=0;i<nstab;i++)
|
||||
used[i]= FALSE;
|
||||
for(emlp=emlines;emlp<emlines+nemlines;emlp++)
|
||||
for (emlp=emlines;emlp<emlines+nemlines;emlp++)
|
||||
chkstr(emlp->em_soper,used);
|
||||
for (tp= fakestack;tp<&fakestack[stackheight];tp++) {
|
||||
if (tp->t_token== -1)
|
||||
|
@ -119,9 +120,9 @@ garbage_collect() {
|
|||
nstab = fillp-stab;
|
||||
}
|
||||
|
||||
void
|
||||
chkstr(str,used) string str; char used[]; {
|
||||
register low,middle,high;
|
||||
static void
|
||||
chkstr(string str, char *used) {
|
||||
int low,middle,high;
|
||||
|
||||
low=0; high=nstab-1;
|
||||
while (high>low) {
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
static char rcsid[] = "$Id$";
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include "assert.h"
|
||||
#include "param.h"
|
||||
#include "tables.h"
|
||||
#include "types.h"
|
||||
|
@ -23,9 +23,9 @@ static char rcsid[] = "$Id$";
|
|||
|
||||
extern int nstab; /* salloc.c */
|
||||
|
||||
void bmove();
|
||||
static void bmove(short *, short *, int);
|
||||
|
||||
savestatus(sp) register state_p sp; {
|
||||
void savestatus(state_p sp) {
|
||||
|
||||
sp->st_sh = stackheight;
|
||||
bmove((short *)fakestack,(short *)sp->st_fs,stackheight*sizeof(token_t));
|
||||
|
@ -42,7 +42,7 @@ savestatus(sp) register state_p sp; {
|
|||
sp->st_ns = nstab;
|
||||
}
|
||||
|
||||
restorestatus(sp) register state_p sp; {
|
||||
void restorestatus(state_p sp) {
|
||||
|
||||
stackheight = sp->st_sh;
|
||||
bmove((short *)sp->st_fs,(short *)fakestack,stackheight*sizeof(token_t));
|
||||
|
@ -59,8 +59,7 @@ restorestatus(sp) register state_p sp; {
|
|||
popstr(sp->st_ns);
|
||||
}
|
||||
|
||||
void
|
||||
bmove(from,to,nbytes) register short *from,*to; register nbytes; {
|
||||
static void bmove(short *from, short *to, int nbytes) {
|
||||
|
||||
if (nbytes<=0)
|
||||
return;
|
||||
|
|
|
@ -20,3 +20,7 @@ typedef struct state {
|
|||
int st_tl; /* tokpatlen */
|
||||
int st_ns; /* nstab */
|
||||
} state_t,*state_p;
|
||||
|
||||
/* state.c */
|
||||
void savestatus(state_p);
|
||||
void restorestatus(state_p);
|
||||
|
|
|
@ -2,10 +2,11 @@
|
|||
static char rcsid[] = "$Id$";
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "assert.h"
|
||||
#include <string.h> /* strcmp */
|
||||
#include "param.h"
|
||||
#include "tables.h"
|
||||
#include "types.h"
|
||||
|
@ -24,11 +25,13 @@ static char rcsid[] = "$Id$";
|
|||
* Author: Hans van Staveren
|
||||
*/
|
||||
|
||||
string myalloc();
|
||||
unsigned codegen();
|
||||
static int from_stack(set_p);
|
||||
#ifdef TABLEDEBUG
|
||||
static void ruletrace(void);
|
||||
#endif
|
||||
|
||||
match(tp,tep,optexp) register token_p tp; register set_p tep; {
|
||||
register bitno;
|
||||
int match(token_p tp, set_p tep, int optexp) {
|
||||
int bitno;
|
||||
token_p ct;
|
||||
result_t result;
|
||||
|
||||
|
@ -53,11 +56,10 @@ match(tp,tep,optexp) register token_p tp; register set_p tep; {
|
|||
return(result.e_v.e_con);
|
||||
}
|
||||
|
||||
void
|
||||
instance(instno,token) register token_p token; {
|
||||
register inst_p inp;
|
||||
void instance(int instno, token_p token) {
|
||||
inst_p inp;
|
||||
int i;
|
||||
register token_p tp;
|
||||
token_p tp;
|
||||
#if MAXMEMBERS != 0
|
||||
struct reginfo *rp;
|
||||
#endif
|
||||
|
@ -71,7 +73,7 @@ instance(instno,token) register token_p token; {
|
|||
return;
|
||||
}
|
||||
inp= &tokeninstances[instno];
|
||||
switch(inp->in_which) {
|
||||
switch (inp->in_which) {
|
||||
default:
|
||||
assert(FALSE);
|
||||
case IN_COPY:
|
||||
|
@ -152,9 +154,8 @@ instance(instno,token) register token_p token; {
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
cinstance(instno,token,tp,regno) register token_p token,tp; {
|
||||
register inst_p inp;
|
||||
static void cinstance(int instno, token_p token, token_p tp, int regno) {
|
||||
inst_p inp;
|
||||
int i;
|
||||
#if MAXMEMBERS != 0
|
||||
struct reginfo *rp;
|
||||
|
@ -164,7 +165,7 @@ cinstance(instno,token,tp,regno) register token_p token,tp; {
|
|||
|
||||
assert(instno!=0);
|
||||
inp= &tokeninstances[instno];
|
||||
switch(inp->in_which) {
|
||||
switch (inp->in_which) {
|
||||
default:
|
||||
assert(FALSE);
|
||||
case IN_COPY:
|
||||
|
@ -250,9 +251,9 @@ cinstance(instno,token,tp,regno) register token_p token,tp; {
|
|||
}
|
||||
}
|
||||
|
||||
eqtoken(tp1,tp2) token_p tp1,tp2; {
|
||||
register i;
|
||||
register tkdef_p tdp;
|
||||
int eqtoken(token_p tp1, token_p tp2) {
|
||||
int i;
|
||||
tkdef_p tdp;
|
||||
|
||||
if (tp1->t_token!=tp2->t_token)
|
||||
return(0);
|
||||
|
@ -286,10 +287,10 @@ eqtoken(tp1,tp2) token_p tp1,tp2; {
|
|||
return(1);
|
||||
}
|
||||
|
||||
distance(cindex) {
|
||||
register char *bp;
|
||||
register i;
|
||||
register token_p tp;
|
||||
int distance(int cindex) {
|
||||
char *bp;
|
||||
int i;
|
||||
token_p tp;
|
||||
int tokexp,tpl;
|
||||
int expsize,toksize,exact;
|
||||
int xsekt=0;
|
||||
|
@ -302,7 +303,7 @@ distance(cindex) {
|
|||
getint(i,bp);
|
||||
}
|
||||
#endif
|
||||
switch( (*bp)&037 ) {
|
||||
switch ( (*bp)&037 ) {
|
||||
default:
|
||||
return(stackheight==0 ? 0 : 100);
|
||||
case DO_MATCH:
|
||||
|
@ -363,31 +364,29 @@ distance(cindex) {
|
|||
return(20-2*exact+fromstackneeded);
|
||||
}
|
||||
|
||||
extern set_t unstackset;
|
||||
extern set_t unstackset; /* tables.c */
|
||||
|
||||
int from_stack(s1)
|
||||
register set_p s1;
|
||||
{
|
||||
register set_p s2 = &unstackset;
|
||||
register int i;
|
||||
static int from_stack(set_p s1) {
|
||||
set_p s2 = &unstackset;
|
||||
int i;
|
||||
for (i = 0; i < SETSIZE; i++) {
|
||||
if ((s1->set_val[i] & s2->set_val[i]) != 0) return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned costcalc(cost) cost_t cost; {
|
||||
extern unsigned cc1,cc2,cc3,cc4;
|
||||
unsigned costcalc(cost_t cost) {
|
||||
extern unsigned cc1,cc2,cc3,cc4; /* tables.c */
|
||||
|
||||
return(cost.ct_space*cc1/cc2 + cost.ct_time*cc3/cc4);
|
||||
}
|
||||
|
||||
ssize(tokexpno) {
|
||||
int ssize(int tokexpno) {
|
||||
|
||||
return(machsets[tokexpno].set_size);
|
||||
}
|
||||
|
||||
tsize(tp) register token_p tp; {
|
||||
int tsize(token_p tp) {
|
||||
|
||||
if (tp->t_token==-1)
|
||||
return(machregs[tp->t_att[0].ar].r_size);
|
||||
|
@ -395,12 +394,12 @@ tsize(tp) register token_p tp; {
|
|||
}
|
||||
|
||||
#ifdef MAXSPLIT
|
||||
instsize(tinstno,tp) token_p tp; {
|
||||
static int instsize(int tinstno, token_p tp) {
|
||||
inst_p inp;
|
||||
struct reginfo *rp;
|
||||
|
||||
inp = &tokeninstances[tinstno];
|
||||
switch(inp->in_which) {
|
||||
switch (inp->in_which) {
|
||||
default:
|
||||
assert(FALSE);
|
||||
case IN_COPY:
|
||||
|
@ -428,9 +427,9 @@ instsize(tinstno,tp) token_p tp; {
|
|||
}
|
||||
#endif /* MAXSPLIT */
|
||||
|
||||
tref(tp,amount) register token_p tp; {
|
||||
register i;
|
||||
register byte *tdpb;
|
||||
void tref(token_p tp, int amount) {
|
||||
int i;
|
||||
byte *tdpb;
|
||||
|
||||
if (tp->t_token==-1)
|
||||
chrefcount(tp->t_att[0].ar,amount,FALSE);
|
||||
|
@ -447,10 +446,10 @@ tref(tp,amount) register token_p tp; {
|
|||
restore it and check whether a certain register is present in the
|
||||
saved stack
|
||||
*/
|
||||
token_t aside[MAXSAVE] ;
|
||||
int aside_length = -1 ;
|
||||
static token_t aside[MAXSAVE] ;
|
||||
static int aside_length = -1 ;
|
||||
|
||||
save_stack(tp) register token_p tp ; {
|
||||
static void save_stack(token_p tp) {
|
||||
int i ;
|
||||
token_p tmp = &fakestack[stackheight - 1];
|
||||
|
||||
|
@ -468,10 +467,10 @@ save_stack(tp) register token_p tp ; {
|
|||
stackheight -= aside_length;
|
||||
}
|
||||
|
||||
in_stack(reg) {
|
||||
register token_p tp ;
|
||||
register i ;
|
||||
register tkdef_p tdp ;
|
||||
int in_stack(int reg) {
|
||||
token_p tp ;
|
||||
int i ;
|
||||
tkdef_p tdp ;
|
||||
|
||||
for ( i=0, tp=aside ; i<aside_length ; i++, tp++ )
|
||||
if (tp->t_token==-1) {
|
||||
|
@ -494,8 +493,8 @@ gotone:
|
|||
return 1 ;
|
||||
}
|
||||
|
||||
rest_stack() {
|
||||
register int i ;
|
||||
static void rest_stack(void) {
|
||||
int i ;
|
||||
|
||||
assert(aside_length!= -1);
|
||||
#ifndef NDEBUG
|
||||
|
@ -509,11 +508,11 @@ rest_stack() {
|
|||
}
|
||||
|
||||
#ifdef MAXSPLIT
|
||||
split(tp,ip,ply,toplevel) token_p tp; register int *ip; {
|
||||
register c2_p cp;
|
||||
int split(token_p tp, int *ip, int ply, int toplevel) {
|
||||
c2_p cp;
|
||||
token_t savestack[MAXSAVE];
|
||||
int ok;
|
||||
register i;
|
||||
int i;
|
||||
int diff;
|
||||
token_p stp;
|
||||
int tpl;
|
||||
|
@ -543,7 +542,7 @@ found:
|
|||
}
|
||||
#endif /* MAXSPLIT */
|
||||
|
||||
unsigned docoerc(tp,cp,ply,toplevel,forced) token_p tp; register c3_p cp; {
|
||||
unsigned docoerc(token_p tp, c3_p cp, int ply, int toplevel, int forced) {
|
||||
unsigned cost;
|
||||
int tpl; /* saved tokpatlen */
|
||||
|
||||
|
@ -557,15 +556,15 @@ unsigned docoerc(tp,cp,ply,toplevel,forced) token_p tp; register c3_p cp; {
|
|||
return(cost);
|
||||
}
|
||||
|
||||
unsigned stackupto(limit,ply,toplevel) token_p limit; {
|
||||
unsigned stackupto(token_p limit, int ply, int toplevel) {
|
||||
token_t savestack[MAXFSTACK];
|
||||
token_p stp;
|
||||
int i,diff;
|
||||
int tpl; /* saved tokpatlen */
|
||||
int nareg; /* saved nareg */
|
||||
int areg[MAXALLREG];
|
||||
register c1_p cp;
|
||||
register token_p tp;
|
||||
c1_p cp;
|
||||
token_p tp;
|
||||
unsigned totalcost=0;
|
||||
struct reginfo *rp,**rpp;
|
||||
|
||||
|
@ -621,11 +620,11 @@ unsigned stackupto(limit,ply,toplevel) token_p limit; {
|
|||
return(totalcost);
|
||||
}
|
||||
|
||||
c3_p findcoerc(tp,tep) token_p tp; set_p tep; {
|
||||
register c3_p cp;
|
||||
c3_p findcoerc(token_p tp, set_p tep) {
|
||||
c3_p cp;
|
||||
token_t rtoken;
|
||||
register i;
|
||||
register struct reginfo **rpp;
|
||||
int i;
|
||||
struct reginfo **rpp;
|
||||
|
||||
for (cp=c3coercs;cp->c3_texpno>=0; cp++) {
|
||||
if (tp!=(token_p) 0) {
|
||||
|
@ -658,8 +657,8 @@ c3_p findcoerc(tp,tep) token_p tp; set_p tep; {
|
|||
return(0); /* nothing found */
|
||||
}
|
||||
|
||||
itokcost() {
|
||||
register tkdef_p tdp;
|
||||
void itokcost(void) {
|
||||
tkdef_p tdp;
|
||||
|
||||
for(tdp=tokens+1;tdp->t_size!=0;tdp++)
|
||||
tdp->t_cost.ct_space = costcalc(tdp->t_cost);
|
||||
|
@ -696,8 +695,8 @@ void fatal(const char *s, ...) {
|
|||
|
||||
#ifdef TABLEDEBUG
|
||||
|
||||
ruletrace() {
|
||||
register i;
|
||||
static void ruletrace(void) {
|
||||
int i;
|
||||
extern int tablelines[MAXTDBUG];
|
||||
extern int ntableline;
|
||||
extern char *tablename;
|
||||
|
@ -712,11 +711,4 @@ ruletrace() {
|
|||
i--;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef NDEBUG
|
||||
badassertion(asstr,file,line) char *asstr, *file; {
|
||||
|
||||
fatal("\"%s\", line %d:Assertion \"%s\" failed",file,line,asstr);
|
||||
}
|
||||
#endif
|
||||
#endif /* TABLEDEBUG */
|
||||
|
|
|
@ -28,3 +28,45 @@ typedef char * string;
|
|||
#ifndef WRD_FMT
|
||||
#define WRD_FMT "%ld"
|
||||
#endif /* WRD_FMT */
|
||||
|
||||
/* codegen.c */
|
||||
unsigned codegen(byte *, int, int, unsigned, int);
|
||||
void readcodebytes(void);
|
||||
#ifdef TABLEDEBUG
|
||||
void initlset(char *);
|
||||
void termlset(void);
|
||||
#endif
|
||||
/* compute.c */
|
||||
string mystrcpy(string);
|
||||
string tostring(word);
|
||||
/* fillem.c */
|
||||
void in_init(char *);
|
||||
void in_start(void);
|
||||
void fillemlines(void);
|
||||
void swtxt(void);
|
||||
/* gencode.c */
|
||||
void out_init(char *);
|
||||
void out_finish(void);
|
||||
void tstoutput(void);
|
||||
/* nextem.c */
|
||||
byte *nextem(int);
|
||||
/* reg.c */
|
||||
void chrefcount(int, int, int);
|
||||
int getrefcount(int, int);
|
||||
void erasereg(int);
|
||||
void cleanregs(void);
|
||||
void chkregs(void);
|
||||
/* salloc.c */
|
||||
string myalloc(int);
|
||||
void myfree(string);
|
||||
void popstr(int);
|
||||
char *salloc(int);
|
||||
void garbage_collect(void);
|
||||
/* subr.c */
|
||||
void itokcost(void);
|
||||
void error(const char *s, ...);
|
||||
void fatal(const char *s, ...);
|
||||
|
||||
#ifdef MACH_OPTIONS
|
||||
void mach_option(char *); /* machine dependent */
|
||||
#endif
|
||||
|
|
|
@ -12,7 +12,7 @@ int framesize;
|
|||
|
||||
/* Write out a constant data section. */
|
||||
|
||||
con_part(int sz, word w)
|
||||
void con_part(int sz, word w)
|
||||
{
|
||||
while (part_size % sz)
|
||||
part_size++;
|
||||
|
@ -29,7 +29,7 @@ con_part(int sz, word w)
|
|||
part_size += sz;
|
||||
}
|
||||
|
||||
con_mult(word sz)
|
||||
void con_mult(word sz)
|
||||
{
|
||||
if (argval != 4)
|
||||
fatal("bad icon/ucon size");
|
||||
|
@ -49,7 +49,7 @@ void prolog(full nlocals)
|
|||
fprintf(codefile, "push fp, lr\n");
|
||||
fprintf(codefile, "mov fp, sp\n");
|
||||
if (nlocals > 0)
|
||||
fprintf(codefile, "sub sp, #%d\n", nlocals);
|
||||
fprintf(codefile, "sub sp, #%ld\n", nlocals);
|
||||
|
||||
framesize = nlocals;
|
||||
}
|
||||
|
|
|
@ -1,42 +0,0 @@
|
|||
/* $Id$ */
|
||||
/*
|
||||
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||
* See the copyright notice in the ACK home directory, in the file "Copyright".
|
||||
*/
|
||||
/* _BadAssertion: used for debugging purposes. It should give an error message
|
||||
indicated by the parameters, and then give a core dump
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <system.h>
|
||||
|
||||
static
|
||||
wr_num(fd, n)
|
||||
File *fd;
|
||||
int n;
|
||||
{
|
||||
char s[2];
|
||||
|
||||
s[1] = '\0';
|
||||
if (n >= 10) {
|
||||
wr_num(fd, n/10);
|
||||
}
|
||||
s[0] = (n % 10) + '0';
|
||||
sys_write(fd, s, 1);
|
||||
}
|
||||
|
||||
int
|
||||
_BadAssertion(file, lineno, assertion)
|
||||
char *file, *assertion;
|
||||
int lineno;
|
||||
{
|
||||
|
||||
sys_write(STDERR, file, strlen(file));
|
||||
sys_write(STDERR, ", line ", 7);
|
||||
wr_num(STDERR, lineno);
|
||||
sys_write(STDERR, ": assertion \"", 13);
|
||||
sys_write(STDERR, assertion, strlen(assertion));
|
||||
sys_write(STDERR, "\" failed\n", 9);
|
||||
sys_stop(S_ABORT);
|
||||
return 0;
|
||||
}
|
|
@ -1,61 +0,0 @@
|
|||
.TH ASSERT 3 "$Revision$"
|
||||
.ad
|
||||
.SH NAME
|
||||
assert \- program verification
|
||||
.SH SYNOPSIS
|
||||
.B #include <assert.h>
|
||||
.PP
|
||||
.B assert(expression)
|
||||
.PP
|
||||
.B _BadAssertion(fn, lino, ass)
|
||||
.br
|
||||
char *fn, *ass;
|
||||
.br
|
||||
unsigned int lino;
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
.I Assert
|
||||
is a macro that indicates
|
||||
.I expression
|
||||
is expected to be true at this point in the program.
|
||||
It causes a call to
|
||||
.I _BadAssertion
|
||||
when
|
||||
.I expression
|
||||
is false (0).
|
||||
.PP
|
||||
The routine
|
||||
.I_BadAssertion
|
||||
accepts three parameters:
|
||||
a filename, a linenumber,
|
||||
and a string representing a failed assertion.
|
||||
It causes a
|
||||
.IR sys_stop (S_ABORT)
|
||||
with a diagnostic comment on standard error.
|
||||
.PP
|
||||
The assertions are disabled by defining the preprocessor constant NDEBUG.
|
||||
.SH DIAGNOSTICS
|
||||
.IR fn ,
|
||||
line
|
||||
.IR lino :
|
||||
assertion
|
||||
.I ass
|
||||
failed.
|
||||
.br
|
||||
.I fn
|
||||
is the source file,
|
||||
.I lino
|
||||
is the source line number,
|
||||
and
|
||||
.I ass
|
||||
is the assertion
|
||||
of the
|
||||
.I assert
|
||||
statement.
|
||||
.SH MODULES
|
||||
system(3)
|
||||
.SH FILES
|
||||
.nf
|
||||
~em/modules/h/assert.h
|
||||
~em/modules/lib/libassert.a
|
||||
.fi
|
|
@ -1,24 +0,0 @@
|
|||
/*
|
||||
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||
* See the copyright notice in the ACK home directory, in the file "Copyright".
|
||||
*/
|
||||
/* $Id$ */
|
||||
/* A S S E R T I O N M A C R O D E F I N I T I O N */
|
||||
|
||||
/* This 'assert' definition can be used in a ,-expression. */
|
||||
|
||||
#ifndef NDEBUG
|
||||
#if __STDC__
|
||||
int _BadAssertion(char *, int, char *);
|
||||
#define assert(exp) ((void)((exp) || _BadAssertion(__FILE__, __LINE__, #exp)))
|
||||
#else
|
||||
/* Note: this macro uses parameter substitution inside strings */
|
||||
#define assert(exp) ((exp) || _BadAssertion(__FILE__, __LINE__, "exp"))
|
||||
#endif
|
||||
#else
|
||||
#if __STDC__
|
||||
#define assert(exp) ((void)0)
|
||||
#else
|
||||
#define assert(exp) (0)
|
||||
#endif
|
||||
#endif /* NDEBUG */
|
|
@ -1,7 +0,0 @@
|
|||
clibrary {
|
||||
name = "lib",
|
||||
srcs = { "./*.c" },
|
||||
hdrs = { "./assert.h" },
|
||||
}
|
||||
|
||||
|
|
@ -13,22 +13,22 @@ struct outrelo;
|
|||
struct outsect;
|
||||
struct ranlib;
|
||||
|
||||
int wr_open(char *f);
|
||||
int wr_open(const char *f);
|
||||
void wr_close(void);
|
||||
void wr_ohead(struct outhead *h);
|
||||
void wr_sect(struct outsect *s, unsigned int c);
|
||||
void wr_ohead(const struct outhead *h);
|
||||
void wr_sect(const struct outsect *s, unsigned int c);
|
||||
void wr_outsect(int sectno);
|
||||
void wr_emit(char *b, long c);
|
||||
void wr_emit(const char *b, long c);
|
||||
void wr_putc(int c);
|
||||
void wr_relo(struct outrelo *r, unsigned int c);
|
||||
void wr_name(struct outname *n, unsigned int c);
|
||||
void wr_string(char *s, long c);
|
||||
void wr_relo(const struct outrelo *r, unsigned int c);
|
||||
void wr_name(const struct outname *n, unsigned int c);
|
||||
void wr_string(const char *s, long c);
|
||||
void wr_arhdr(int fd, struct ar_hdr *a);
|
||||
void wr_ranlib(int fd, struct ranlib *r, long cnt);
|
||||
void wr_int2(int fd, int i);
|
||||
void wr_long(int fd, long l);
|
||||
void wr_bytes(int fd, char *buf, long l);
|
||||
int rd_open(char *f);
|
||||
void wr_bytes(int fd, const char *buf, long l);
|
||||
int rd_open(const char *f);
|
||||
int rd_fdopen(int f);
|
||||
void rd_close(void);
|
||||
void rd_ohead(struct outhead *h);
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||
* See the copyright notice in the ACK home directory, in the file "Copyright".
|
||||
*/
|
||||
#include <fcntl.h>
|
||||
#include "obj.h"
|
||||
|
||||
/*
|
||||
|
@ -57,7 +58,7 @@ OUTREAD(int p, char* b, long n)
|
|||
* Open the output file according to the chosen strategy.
|
||||
*/
|
||||
int
|
||||
rd_open(char* f)
|
||||
rd_open(const char* f)
|
||||
{
|
||||
|
||||
if ((outfile = open(f, 0)) < 0)
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
* part. In this case #define OUTSEEK.
|
||||
*/
|
||||
|
||||
#include <fcntl.h>
|
||||
#include "obj.h"
|
||||
|
||||
/*
|
||||
|
@ -28,8 +29,7 @@ int __sectionnr;
|
|||
static int offcnt;
|
||||
|
||||
void
|
||||
__wr_flush(ptr)
|
||||
register struct fil *ptr;
|
||||
__wr_flush(struct fil *ptr)
|
||||
{
|
||||
#ifdef OUTSEEK
|
||||
/* seek to correct position even if we aren't going to write now */
|
||||
|
@ -53,14 +53,12 @@ __wr_flush(ptr)
|
|||
}
|
||||
|
||||
static void
|
||||
OUTWRITE(p, b, n)
|
||||
int p; /* part number */
|
||||
register char *b; /* buffer pointer */
|
||||
long n; /* write count */
|
||||
OUTWRITE(int p, const char *b, long n)
|
||||
/* p = part number, b = buffer pointer, n = write count */
|
||||
{
|
||||
register struct fil *ptr = &__parts[p];
|
||||
register char *pn = ptr->pnow;
|
||||
register int i;
|
||||
struct fil *ptr = &__parts[p];
|
||||
char *pn = ptr->pnow;
|
||||
int i;
|
||||
long m;
|
||||
|
||||
i = ptr->cnt;
|
||||
|
@ -119,11 +117,10 @@ OUTWRITE(p, b, n)
|
|||
}
|
||||
|
||||
static void
|
||||
BEGINSEEK(p, o)
|
||||
int p; /* part number */
|
||||
long o; /* offset in file */
|
||||
BEGINSEEK(int p, long o)
|
||||
/* p = part number, o = offset in file */
|
||||
{
|
||||
register struct fil *ptr = &__parts[p];
|
||||
struct fil *ptr = &__parts[p];
|
||||
|
||||
#ifdef OUTSEEK
|
||||
ptr->fd = outfile;
|
||||
|
@ -143,10 +140,9 @@ BEGINSEEK(p, o)
|
|||
* Open the output file according to the chosen strategy.
|
||||
*/
|
||||
int
|
||||
wr_open(f)
|
||||
char *f;
|
||||
wr_open(const char *f)
|
||||
{
|
||||
register struct fil *fdp;
|
||||
struct fil *fdp;
|
||||
|
||||
close(creat(f, 0666));
|
||||
#ifdef OUTSEEK
|
||||
|
@ -165,7 +161,7 @@ wr_open(f)
|
|||
void
|
||||
wr_close()
|
||||
{
|
||||
register struct fil *ptr;
|
||||
struct fil *ptr;
|
||||
|
||||
for (ptr = &__parts[PARTEMIT]; ptr < &__parts[NPARTS]; ptr++) {
|
||||
__wr_flush(ptr);
|
||||
|
@ -181,11 +177,10 @@ wr_close()
|
|||
}
|
||||
|
||||
void
|
||||
wr_ohead(head)
|
||||
register struct outhead *head;
|
||||
wr_ohead(const struct outhead *head)
|
||||
{
|
||||
{
|
||||
register long off = OFF_RELO(*head);
|
||||
long off = OFF_RELO(*head);
|
||||
|
||||
BEGINSEEK(PARTEMIT, 0L);
|
||||
BEGINSEEK(PARTRELO, off);
|
||||
|
@ -202,7 +197,7 @@ wr_ohead(head)
|
|||
{
|
||||
char buf[SZ_HEAD];
|
||||
|
||||
register char *c = &buf[0];
|
||||
char *c = &buf[0];
|
||||
|
||||
put2(head->oh_magic, c); c += 2;
|
||||
put2(head->oh_stamp, c); c += 2;
|
||||
|
@ -217,11 +212,9 @@ wr_ohead(head)
|
|||
}
|
||||
|
||||
void
|
||||
wr_sect(sect, cnt)
|
||||
register struct outsect *sect;
|
||||
register unsigned int cnt;
|
||||
wr_sect(const struct outsect *sect, unsigned int cnt)
|
||||
{
|
||||
{ register unsigned int i = cnt;
|
||||
{ unsigned int i = cnt;
|
||||
|
||||
while (i--) {
|
||||
if (offcnt >= 1 && offcnt < SECTCNT) {
|
||||
|
@ -234,8 +227,8 @@ wr_sect(sect, cnt)
|
|||
}
|
||||
while (cnt)
|
||||
{
|
||||
register char *c;
|
||||
register unsigned int i;
|
||||
char *c;
|
||||
unsigned int i;
|
||||
|
||||
i = __parts[PARTEMIT].cnt/SZ_SECT;
|
||||
c = __parts[PARTEMIT].pnow;
|
||||
|
@ -258,10 +251,10 @@ wr_sect(sect, cnt)
|
|||
}
|
||||
|
||||
void
|
||||
wr_outsect(s)
|
||||
int s; /* section number */
|
||||
wr_outsect(int s)
|
||||
/* s = section number */
|
||||
{
|
||||
register struct fil *ptr = &__parts[PARTEMIT + getsect(sectionnr)];
|
||||
struct fil *ptr = &__parts[PARTEMIT + getsect(sectionnr)];
|
||||
|
||||
if (s != sectionnr && s >= (SECTCNT-1) && sectionnr >= (SECTCNT-1)) {
|
||||
#ifdef OUTSEEK
|
||||
|
@ -291,23 +284,19 @@ wr_outsect(s)
|
|||
* We don't have to worry about byte order here.
|
||||
*/
|
||||
void
|
||||
wr_emit(emit, cnt)
|
||||
char *emit;
|
||||
long cnt;
|
||||
wr_emit(const char *emit, long cnt)
|
||||
{
|
||||
OUTWRITE(PARTEMIT + getsect(sectionnr) , emit, cnt);
|
||||
}
|
||||
|
||||
void
|
||||
wr_relo(relo, cnt)
|
||||
register struct outrelo *relo;
|
||||
unsigned int cnt;
|
||||
wr_relo(const struct outrelo *relo, unsigned int cnt)
|
||||
{
|
||||
|
||||
while (cnt)
|
||||
{
|
||||
register char *c;
|
||||
register unsigned int i;
|
||||
char *c;
|
||||
unsigned int i;
|
||||
|
||||
i = __parts[PARTRELO].cnt/SZ_RELO;
|
||||
c = __parts[PARTRELO].pnow;
|
||||
|
@ -329,14 +318,12 @@ wr_relo(relo, cnt)
|
|||
}
|
||||
|
||||
void
|
||||
wr_name(name, cnt)
|
||||
register struct outname *name;
|
||||
unsigned int cnt;
|
||||
wr_name(const struct outname *name, unsigned int cnt)
|
||||
{
|
||||
while (cnt)
|
||||
{
|
||||
register char *c;
|
||||
register unsigned int i;
|
||||
char *c;
|
||||
unsigned int i;
|
||||
|
||||
i = __parts[PARTNAME].cnt/SZ_NAME;
|
||||
c = __parts[PARTNAME].pnow;
|
||||
|
@ -356,11 +343,8 @@ wr_name(name, cnt)
|
|||
}
|
||||
|
||||
void
|
||||
wr_string(addr, len)
|
||||
char *addr;
|
||||
long len;
|
||||
wr_string(const char *addr, long len)
|
||||
{
|
||||
|
||||
OUTWRITE(PARTCHAR, addr, len);
|
||||
}
|
||||
|
||||
|
|
|
@ -12,19 +12,17 @@
|
|||
You have to put it in an int!
|
||||
*/
|
||||
|
||||
static int maxchunk = MAXCHUNK;
|
||||
static const int maxchunk = MAXCHUNK;
|
||||
|
||||
/*
|
||||
* Just write "cnt" bytes to file-descriptor "fd".
|
||||
*/
|
||||
void
|
||||
wr_bytes(fd, string, cnt)
|
||||
register char *string;
|
||||
register long cnt;
|
||||
wr_bytes(int fd, const char *string, long cnt)
|
||||
{
|
||||
|
||||
while (cnt) {
|
||||
register int n = cnt >= maxchunk ? maxchunk : cnt;
|
||||
int n = cnt >= maxchunk ? maxchunk : cnt;
|
||||
|
||||
if (write(fd, string, n) != n)
|
||||
wr_fatal();
|
||||
|
|
|
@ -6,11 +6,12 @@
|
|||
#include "obj.h"
|
||||
|
||||
extern int __sectionnr;
|
||||
void __wr_flush(struct fil *);
|
||||
|
||||
void
|
||||
wr_putc(ch)
|
||||
wr_putc(int ch)
|
||||
{
|
||||
register struct fil *ptr = &__parts[PARTEMIT+getsect(__sectionnr)];
|
||||
struct fil *ptr = &__parts[PARTEMIT+getsect(__sectionnr)];
|
||||
|
||||
if (ptr->cnt == 0) __wr_flush(ptr);
|
||||
ptr->cnt--; *ptr->pnow++ = ch;
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
clibrary {
|
||||
name = "lib",
|
||||
srcs = { "./*.c" },
|
||||
srcs = {
|
||||
"./doprnt.c", "./format.c", "./fprint.c", "./print.c",
|
||||
"./sprint.c",
|
||||
},
|
||||
hdrs = { "./print.h" },
|
||||
deps = {
|
||||
"modules+headers",
|
||||
"./param.h",
|
||||
"modules/src/string+lib",
|
||||
"modules/src/system+lib",
|
||||
"./*.h"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -16,10 +16,7 @@
|
|||
%d = int
|
||||
$ */
|
||||
void
|
||||
doprnt(fp, fmt, argp)
|
||||
File *fp;
|
||||
char *fmt;
|
||||
va_list argp;
|
||||
doprnt(File *fp, char *fmt, va_list argp)
|
||||
{
|
||||
char buf[SSIZE];
|
||||
|
||||
|
|
|
@ -5,13 +5,12 @@
|
|||
/* $Id$ */
|
||||
|
||||
#include <string.h>
|
||||
#include <ack_string.h>
|
||||
#include <system.h>
|
||||
#include "print.h"
|
||||
|
||||
extern char *long2str();
|
||||
|
||||
static int
|
||||
integral(c)
|
||||
integral(int c)
|
||||
{
|
||||
switch (c) {
|
||||
case 'b':
|
||||
|
@ -36,9 +35,7 @@ integral(c)
|
|||
%d = int
|
||||
$ */
|
||||
int
|
||||
_format(buf, fmt, argp)
|
||||
char *buf, *fmt;
|
||||
register va_list argp;
|
||||
_format(char *buf, char *fmt, va_list argp)
|
||||
{
|
||||
register char *pf = fmt;
|
||||
register char *pb = buf;
|
||||
|
|
|
@ -17,27 +17,12 @@
|
|||
$ */
|
||||
/*VARARGS*/
|
||||
void
|
||||
fprint
|
||||
#if __STDC__
|
||||
(File *fp, char *fmt, ...)
|
||||
fprint(File *fp, char *fmt, ...)
|
||||
{
|
||||
#else
|
||||
(va_alist)
|
||||
va_dcl
|
||||
{
|
||||
File *fp;
|
||||
char *fmt;
|
||||
#endif
|
||||
va_list args;
|
||||
char buf[SSIZE];
|
||||
|
||||
#if __STDC__
|
||||
va_start(args, fmt);
|
||||
#else
|
||||
va_start(args);
|
||||
fp = va_arg(args, File *);
|
||||
fmt = va_arg(args, char *);
|
||||
#endif
|
||||
sys_write(fp, buf, _format(buf, fmt, args));
|
||||
va_end(args);
|
||||
}
|
||||
|
|
|
@ -17,25 +17,12 @@
|
|||
$ */
|
||||
/*VARARGS*/
|
||||
void
|
||||
print
|
||||
#if __STDC__
|
||||
(char *fmt, ...)
|
||||
print(char *fmt, ...)
|
||||
{
|
||||
#else
|
||||
(va_alist)
|
||||
va_dcl
|
||||
{
|
||||
char *fmt;
|
||||
#endif
|
||||
va_list args;
|
||||
char buf[SSIZE];
|
||||
|
||||
#if __STDC__
|
||||
va_start(args, fmt);
|
||||
#else
|
||||
va_start(args);
|
||||
fmt = va_arg(args, char *);
|
||||
#endif
|
||||
sys_write(STDOUT, buf, _format(buf, fmt, args));
|
||||
va_end(args);
|
||||
}
|
||||
|
|
|
@ -7,17 +7,12 @@
|
|||
#ifndef __PRINT_INCLUDED__
|
||||
#define __PRINT_INCLUDED__
|
||||
|
||||
#include <ansi.h>
|
||||
#if __STDC__
|
||||
#include <stdarg.h>
|
||||
#else
|
||||
#include <varargs.h>
|
||||
#endif
|
||||
|
||||
_PROTOTYPE(void print, (char *fmt, ...));
|
||||
_PROTOTYPE(void fprint, (File *f, char *fmt, ...));
|
||||
_PROTOTYPE(void doprnt, (File *f, char *fmt, va_list ap));
|
||||
_PROTOTYPE(int _format, (char *buf, char *fmt, va_list ap));
|
||||
_PROTOTYPE(char *sprint, (char *buf, char *fmt, ...));
|
||||
void print(char *fmt, ...);
|
||||
void fprint(File *f, char *fmt, ...);
|
||||
void doprnt(File *f, char *fmt, va_list ap);
|
||||
int _format(char *buf, char *fmt, va_list ap);
|
||||
char *sprint(char *buf, char *fmt, ...);
|
||||
|
||||
#endif /* __PRINT_INCLUDED__ */
|
||||
|
|
|
@ -17,25 +17,11 @@
|
|||
$ */
|
||||
/*VARARGS*/
|
||||
char *
|
||||
sprint
|
||||
#if __STDC__
|
||||
(char *buf, char *fmt, ...)
|
||||
sprint(char *buf, char *fmt, ...)
|
||||
{
|
||||
#else
|
||||
(va_alist)
|
||||
va_dcl
|
||||
{
|
||||
char *buf, *fmt;
|
||||
#endif
|
||||
va_list args;
|
||||
|
||||
#if __STDC__
|
||||
va_start(args, fmt);
|
||||
#else
|
||||
va_start(args);
|
||||
buf = va_arg(args, char *);
|
||||
fmt = va_arg(args, char *);
|
||||
#endif
|
||||
buf[_format(buf, fmt, args)] = '\0';
|
||||
va_end(args);
|
||||
return buf;
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
normalrule {
|
||||
name = "c_mnem_narg_h",
|
||||
ins = {
|
||||
|
@ -53,6 +52,7 @@ local function variant(name, cflags)
|
|||
"modules/src/alloc+lib",
|
||||
"modules/src/em_code+headers",
|
||||
"modules/src/em_data+lib",
|
||||
"modules/src/string+lib",
|
||||
"modules/src/system+lib",
|
||||
"./*.h",
|
||||
}
|
||||
|
@ -61,4 +61,3 @@ end
|
|||
|
||||
variant("lib_ev", {})
|
||||
variant("lib_kv", { "-DCOMPACT" })
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
#include <ack_string.h>
|
||||
|
||||
/* #define XXX_YYY /* only for early debugging */
|
||||
|
||||
|
@ -283,7 +284,6 @@ getnumber(c, ap)
|
|||
register char *p = str;
|
||||
int n;
|
||||
int expsign;
|
||||
long str2long();
|
||||
|
||||
ap->ema_argtype = cst_ptyp;
|
||||
expsign = 0;
|
||||
|
|
|
@ -7,25 +7,16 @@
|
|||
#ifndef __ACK_STRING_INCLUDED__
|
||||
#define __ACK_STRING_INCLUDED__
|
||||
|
||||
#include <ansi.h>
|
||||
|
||||
_PROTOTYPE(char *strcpy, (char *s1, const char *s2));
|
||||
_PROTOTYPE(char *strncpy, (char *s1, const char *s2, size_t n));
|
||||
_PROTOTYPE(char *strcat, (char *s1, const char *s2));
|
||||
_PROTOTYPE(char *strncat, (char *s1, const char *s2, size_t n));
|
||||
_PROTOTYPE(int strcmp, (const char *s1, const char *s2));
|
||||
_PROTOTYPE(int strncmp, (const char *s1, const char *s2, size_t n));
|
||||
_PROTOTYPE(_SIZET strlen, (const char *s));
|
||||
_PROTOTYPE(char *strindex, (char *s, int c));
|
||||
_PROTOTYPE(char *strrindex, (char *s, int c));
|
||||
_PROTOTYPE(char *strzero, (char *s));
|
||||
_PROTOTYPE(char *str2bts, (char *s, char *b, int *n));
|
||||
_PROTOTYPE(char *long2str, (long l, int b));
|
||||
_PROTOTYPE(long str2long, (char *s, int b));
|
||||
_PROTOTYPE(char *btscpy, (char *s1, char *s2, int n));
|
||||
_PROTOTYPE(char *btscat, (char *s1, int n1, char *s2, int n2));
|
||||
_PROTOTYPE(int btscmp, (char *s1, int n1, char *s2, int n2));
|
||||
_PROTOTYPE(char *btszero, (char *b, int n));
|
||||
_PROTOTYPE(char *bts2str, (char *b, int n, char *s));
|
||||
char *strindex(char *s, int c);
|
||||
char *strrindex(char *s, int c);
|
||||
char *strzero(char *s);
|
||||
char *str2bts(char *s, char *b, int *n);
|
||||
char *long2str(long l, int b);
|
||||
long str2long(char *s, int b);
|
||||
char *btscpy(char *s1, char *s2, int n);
|
||||
char *btscat(char *s1, int n1, char *s2, int n2);
|
||||
int btscmp(char *s1, int n1, char *s2, int n2);
|
||||
char *btszero(char *b, int n);
|
||||
char *bts2str(char *b, int n, char *s);
|
||||
|
||||
#endif /* __ACK_STRING_INCLUDED__ */
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
clibrary {
|
||||
name = "lib",
|
||||
srcs = { "./*.c" },
|
||||
deps = {
|
||||
"modules+headers",
|
||||
"./*.h"
|
||||
srcs = {
|
||||
"./bts2str.c", "./btscat.c", "./btscmp.c",
|
||||
"./btscpy.c", "./btszero.c", "./long2str.c",
|
||||
"./str2bts.c", "./str2long.c", "./strindex.c",
|
||||
"./strrindex.c", "./strzero.c",
|
||||
},
|
||||
hdrs = { "./ack_string.h", },
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
/* $Id$ */
|
||||
/*
|
||||
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||
* See the copyright notice in the ACK home directory, in the file "Copyright".
|
||||
*/
|
||||
/* append t to s
|
||||
*/
|
||||
|
||||
#include "ack_string.h"
|
||||
|
||||
char *
|
||||
strcat(s, t)
|
||||
register char *s;
|
||||
register _CONST char *t;
|
||||
{
|
||||
register char *b = s;
|
||||
|
||||
while (*s++)
|
||||
;
|
||||
s--;
|
||||
while (*s++ = *t++)
|
||||
;
|
||||
return b;
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue