57 lines
1.3 KiB
C
57 lines
1.3 KiB
C
/* Copyright (c) 2019 ACK Project.
|
|
* See the copyright notice in the ACK home directory,
|
|
* in the file "Copyright".
|
|
*
|
|
*/
|
|
#ifndef CODE_H_
|
|
#define CODE_H_
|
|
|
|
#include "em_arith.h"
|
|
#include "em_label.h"
|
|
|
|
struct def;
|
|
struct node;
|
|
struct type;
|
|
struct desig;
|
|
|
|
void routine_label(register struct def * df);
|
|
void RomString(register struct node *nd);
|
|
void RomReal(register struct node *nd);
|
|
void BssVar(void);
|
|
arith CodeBeginBlock(register struct def *df);
|
|
void CodeEndBlock(register struct def *df, arith StackAdjustment);
|
|
void CodeExpr(register struct node *nd, register struct desig *ds,
|
|
label true_label);
|
|
void CodeCall(register struct node *nd);
|
|
void RangeCheck(register struct type *tpl, register struct type *tpr);
|
|
|
|
/* Generate code to push the value of the expression "nd"
|
|
on the stack.
|
|
*/
|
|
void CodePExpr(register struct node *nd);
|
|
|
|
/* Generate code to push the address of the designator "nd"
|
|
on the stack.
|
|
*/
|
|
void CodeDAddress(struct node *nd);
|
|
|
|
/* Generate code to store the expression on the stack
|
|
into the designator "nd".
|
|
*/
|
|
void CodeDStore(register struct node *nd);
|
|
|
|
/* Generate code to convert long to int */
|
|
void Long2Int(void);
|
|
/* Generate code to convert int to long */
|
|
void Int2Long(void);
|
|
/* Generate code to convert int to real */
|
|
void Int2Real(arith size);
|
|
/* Generate code to convert real to int */
|
|
void Real2Int(void);
|
|
|
|
|
|
|
|
|
|
|
|
#endif /* CODE_H_ */
|