package de.fuberlin.projectF.CodeGenerator;
/* Class: Assembler
* Diese abstrakte Klasse enthält die abstrakten Methoden der zu übersetzenden Funktionen
* Diese sind in GNUAssembler bzw IntelAssembler implementiert
*/
public abstract class Assembler {
public StringBuffer sectionHead;
public StringBuffer sectionData;
public StringBuffer sectionText;
public Assembler() {
}
public StringBuffer getSectionHead() {
return sectionHead;
}
public StringBuffer getSectionData() {
return sectionData;
}
public StringBuffer getSectionText() {
return sectionText;
}
protected abstract String translate(String op);
protected abstract void createEP();
protected abstract void data(String label, String type, String value);
protected abstract void declare(String name);
protected abstract void funcDec(String name, String operand1, String operand2);
protected abstract void funcEnd();
protected abstract void je(String label);
protected abstract void jne(String label);
protected abstract void jl(String label);
protected abstract void jg(String label);
protected abstract void jb(String label);
protected abstract void ja(String label);
protected abstract void jle(String label);
protected abstract void jge(String label);
protected abstract void jbe(String label);
protected abstract void jae(String label);
protected abstract void jmp(String label);
protected abstract void icmp(String source, String target);
protected abstract void fcmp(String source, String target);
protected abstract void label(String name);
protected abstract void call(String name);
protected abstract void push(String operand, String comment);
protected abstract void lea(String source, String target, String string);
protected abstract void mov(String source, String target, String comment);
protected abstract void movsd(String source, String target, String comment);
protected abstract void movss(String source, String target, String comment);
protected abstract void cvtsi2sd(String source, String target, String comment);
protected abstract void cvtsd2ss(String source, String target, String comment);
protected abstract void cvttss2si(String source, String target, String comment);
protected abstract void or(String source, String target, String comment);
protected abstract void and(String source, String target, String comment);
protected abstract void xor(String source, String target, String comment);
protected abstract void idiv(String source);
protected abstract void imul(String source, String target, String comment);
protected abstract void sub(String source, String target, String comment);
protected abstract void add(String source, String target, String comment);
protected abstract void shl(String source, String target, String comment);
protected abstract void shr(String source, String target, String comment);
protected abstract void sar(String source, String target, String comment);
protected abstract void addsd(String source, String target, String comment);
protected abstract void subsd(String source, String target, String comment);
protected abstract void mulsd(String source, String target, String comment);
protected abstract void divsd(String source, String target, String comment);
}