void gen_e_eno(struct treenode *bnode, char *instr)
{
- printf("\t@ gen_e_eno(%s)\n", instr);
+ printf("\t// gen_e_eno(%s)\n", instr);
KIDREG2PARM(0);
KIDREG2PARM(1);
printf("\t%s %s, %s, %s\n", instr, BN_REG, KID_REG(0), KID_REG(1));
void gen_id_eno(struct treenode *bnode)
{
- printf("\t@gen_id_eno\n");
+ printf("\t//gen_id_eno\n");
KIDKIDREG2PARM(1,0);
KIDKIDREG2PARM(1,1);
KIDREG2PARM(0);
void gen_e_imm(struct treenode *bnode, char *instr)
{
- printf("\t@gen_e_imm(%s)\n", instr);
+ printf("\t//gen_e_imm(%s)\n", instr);
KIDREG2PARM(0);
KIDREG2ID(1);
/* man kann sich ein move der konstante bei der multiplikation ersparen */
if(strcmp(instr, "mullw") == 0) {
if(KID_VAL(1) == 1 && strcmp(KID_REG(0), BN_REG) == 0) {
- printf("\t@multiplikation mit 1 wegoptimiert\n");
+ printf("\t//multiplikation mit 1 wegoptimiert\n");
} else {
if(KID_VAL(1) > (65536)-1 || KID_VAL(1) < -65536) {
moveimm(KID_VAL(1), next_reg(BN_REG,0));
}
} else {
if(strcmp(instr, "sub") == 0 && KID_VAL(1) == 0) {
- printf("\t@subtraktion mit 0 wegoptimiert\n");
+ printf("\t//subtraktion mit 0 wegoptimiert\n");
move(KID_REG(0), BN_REG);
} else {
if(KID_VAL(1) > (65536)-1 || KID_VAL(1) < -65536) {
void gen_imm_eno(struct treenode *bnode, char *instr)
{
- printf("\t@gen_imm_eno(%s)\n", instr);
+ printf("\t//gen_imm_eno(%s)\n", instr);
KIDREG2ID(0);
KIDREG2PARM(1);
/* man kann sich ein move der konstante bei der multiplikation ersparen */
if(strcmp(instr, "mul") == 0) {
if(KID_VAL(0) == 1 && strcmp(KID_REG(1), BN_REG) == 0) {
- printf("\t@multiplikation mit 1 wegoptimiert\n");
+ printf("\t//multiplikation mit 1 wegoptimiert\n");
} else {
if(KID_VAL(0) > (65536)-1 || KID_VAL(0) < -65536) {
moveimm(KID_VAL(0), next_reg(BN_REG,0));
void gen_eqless(struct treenode *bnode, char *op, short e0, short e1, short deep)
{
- printf("\t@gen_eqless_%i%i @ %i (op: %s)\n", e0, e1, deep, op);
+ printf("\t//gen_eqless_%i%i // %i (op: %s)\n", e0, e1, deep, op);
if(e0) { KIDREG2PARM(0); } else { moveimm(KID_VAL(0), BN_REG); }
if(e1) { KIDREG2PARM(1); }
if(strcmp(op,"e")==0 && bnode->kids[1]->op == O_NULL) {
void gen_subspecial(struct treenode *bnode, short e)
{
/* tritt z.b. bei snafu_05.0 auf */
- printf("\t@gen_subspecial(%i)\n", e);
+ printf("\t//gen_subspecial(%i)\n", e);
KIDREG2ID(0);
KIDKIDREG2PARM(1,0);
- /* TODO: Loong@ codea_snafu_03.0 */
+ /* TODO: Loong// codea_snafu_03.0 */
if(e) {
if(KIDKID_VAL(1,0) != 0) {
void assign_var(struct treenode *bnode)
{
- printf("\t@assign_var\n");
+ printf("\t//assign_var\n");
KIDREG2PARM(1);
if (strcmp(bnode->kids[0]->kids[0]->name, bnode->kids[1]->name) != 0) {
KIDKIDREG2PARM(0,0);
void make_call(struct treenode *bnode)
{
int j;
- printf("\t@params pushen\n");
+ printf("\t//params pushen\n");
for(j = 0; j < bnode->soffset; j++) {
if(sc[j] == 1) {
printf("\tlwz 20,%d(1)\n", j*4);
printf("\tstw %s,%d(1)\n", param_reg(j), j*4);
}
}
- printf("\t@vars pushen\n");
+ printf("\t//vars pushen\n");
for(j = bnode->soffset; j < bnode->soffset + bnode->vars; j++) {
printf("\tstw %s,%d(1)\n", param_reg(j), j*4);
}
/* TODO: schoener machen... */
if(strcmp(BN_REG, "14")!=0) {
- printf("\t@tmp register pushen\n");
+ printf("\t//tmp register pushen\n");
printf("\tstw 14,52(1)\n");
if(strcmp(BN_REG, "15")!=0) {
printf("\tstw 15,56(1)\n");
move("r0", BN_REG);
if(strcmp(BN_REG, "14")!=0) {
- printf("\t@tmp register poppen\n");
+ printf("\t//tmp register poppen\n");
if(strcmp(BN_REG, "15")!=0) {
if(strcmp(BN_REG, "16")!=0) {
printf("\tlwz 16,60(1)\n");
printf("\tlwz 14,52(1)\n");
}
- printf("\t@vars poppen\n");
+ printf("\t//vars poppen\n");
for(j = bnode->soffset + bnode->vars - 1; j > bnode->soffset - 1; j--) {
printf("\tlwz %s,%d(1)\n", param_reg(j), j*4);
}
- printf("\t@params poppen\n");
+ printf("\t//params poppen\n");
for(j = bnode->soffset - 1; j >= 0; j--) {
if(sc[j] == 0)
printf("\tlwz %s,%d(1)\n", param_reg(j), j*4);
void prep_arg(struct treenode *bnode, int moveit)
{
- printf("\t@args-nr-> %i (%%%s) [moveit= %i]\n", bnode->soffset, param_reg(bnode->soffset), moveit);
+ printf("\t//args-nr-> %i (%%%s) [moveit= %i]\n", bnode->soffset, param_reg(bnode->soffset), moveit);
sc[bnode->soffset] = 1;
if(moveit) { /* expr */
if((BN_REG == (char *) NULL) || (bnode->kids[1] != TREENULL && bnode->kids[1]->op == O_ID && bnode->kids[1]->kids[0] == TREENULL && bnode->kids[1]->kids[1] == TREENULL)) {
void field_lolbfefail(struct treenode *bnode)
{
- printf("\t@ field(expr)\n");
+ printf("\t// field(expr)\n");
KIDREG2PARM(0);
printf("\tldr %s, [%s, #%d]\n", BN_REG, KID_REG(0), bnode->soffset * 4);
}
void field_lolbfefail_imm(struct treenode *bnode)
{
- printf("\t@ field(imm)\n");
+ printf("\t// field(imm)\n");
moveimm(KID_VAL(0), BN_REG);
printf("\tlwz %s, [%s, #%d]\n", BN_REG, BN_REG, bnode->soffset * 4);
}
ifstat: O_IF(O_BOOL(expr)) # 1 # /* dann braucht man kein test */
-ret: O_RET(retexpr) # 2 # printf("\t@ o_ret(expr)\n"); move(BN_REG, "r0");
+ret: O_RET(retexpr) # 2 # printf("\t// o_ret(expr)\n"); move(BN_REG, "x0");
ret: O_EXPR(expr) # 0 #
-retexpr: O_ID # 1 # printf("\t@*retexpr*/\n"); if(bnode->param_index > -1) move(param_reg(bnode->param_index), BN_REG);
+retexpr: O_ID # 1 # printf("\t//*retexpr*/\n"); if(bnode->param_index > -1) move(param_reg(bnode->param_index), BN_REG);
retexpr: expr