/*  Copyright (c) 2019 ACK Project.
 *  See the copyright notice in the ACK home directory, 
 *  in the file "Copyright".
 *
 *  Created on: 2019-03-15
 *  
 */
#ifndef STACK_H_
#define STACK_H_

#include "global.h"


void init_stack(void);
void newSP(ptr ap);
void incSP(size n);
void decSP(size n);
void newLB(ptr p);
void st_stdp(register ptr addr, ptr ap);
void st_stip(register ptr addr, ptr ap);
void st_stn(register ptr addr, long al, size n);
void st_stw(register ptr addr, long al);
void st_stf(register ptr addr, double f, size n);
ptr st_lddp(register ptr addr);
ptr st_ldip(register ptr addr);
unsigned long st_ldu(register ptr addr, size n);
unsigned long st_lduw(register ptr addr);
long st_lds(register ptr addr, size n);
long st_ldsw(register ptr addr);
double st_ldf(register ptr addr, size n);
void st_mvs(register ptr s2, register ptr s1, size n);
void st_mvd(ptr s, ptr d, size n);
ptr dppop(void);
unsigned long upop(size n);
unsigned long uwpop(void);
long spop(size n);
long swpop(void);
void pop_dt(ptr d, size n);
void popw_dt(ptr d);
void pop_st(ptr s, size n);
void popw_st(ptr s);
double fpop(size n);
long wpop(void);
void dppush(ptr p);
void wpush(long l);
void npush(register long l, register size n);
void push_dt(ptr d, size n);
void pushw_dt(ptr d);
void push_st(ptr s, size n);
void pushw_st(ptr s);
void fpush(double f, size n);

#endif /* STACK_H_ */