56 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			56 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_ */
 |