diff --git a/src/main/java/dk/camelot64/kickc/asm/AsmComment.java b/src/main/java/dk/camelot64/kickc/asm/AsmComment.java index bd25bc30c..7c6037d0f 100644 --- a/src/main/java/dk/camelot64/kickc/asm/AsmComment.java +++ b/src/main/java/dk/camelot64/kickc/asm/AsmComment.java @@ -2,8 +2,11 @@ package dk.camelot64.kickc.asm; /** An assember comment */ public class AsmComment implements AsmLine { + private String comment; + private int index; + public AsmComment(String comment) { this.comment = comment; } @@ -22,21 +25,21 @@ public class AsmComment implements AsmLine { return 0; } - @Override - public int getInvocationCountEstimate() { - return 0; - } - - @Override - public double getEstimatedTotalCycles() { - return 0; - } - @Override public String getAsm() { return "// "+comment; } + @Override + public int getIndex() { + return index; + } + + @Override + public void setIndex(int index) { + this.index = index; + } + @Override public String toString() { return getAsm(); diff --git a/src/main/java/dk/camelot64/kickc/asm/AsmFragment.java b/src/main/java/dk/camelot64/kickc/asm/AsmFragment.java index 030f52329..c02462017 100644 --- a/src/main/java/dk/camelot64/kickc/asm/AsmFragment.java +++ b/src/main/java/dk/camelot64/kickc/asm/AsmFragment.java @@ -415,7 +415,7 @@ public class AsmFragment { AsmInstruction instruction; if (paramModeCtx == null) { AsmInstructionType type = AsmInstuctionSet.getInstructionType(ctx.MNEMONIC().getText(), AsmAddressingMode.NON, null); - instruction = new AsmInstruction(type, null, 1); + instruction = new AsmInstruction(type, null); } else { instruction = (AsmInstruction) this.visit(paramModeCtx); } @@ -467,7 +467,7 @@ public class AsmFragment { String mnemonic = instructionCtx.MNEMONIC().getSymbol().getText(); String parameter = (String) this.visit(exprCtx); AsmInstructionType type = AsmInstuctionSet.getInstructionType(mnemonic, addressingMode, parameter); - return new AsmInstruction(type, parameter, 1); + return new AsmInstruction(type, parameter); } diff --git a/src/main/java/dk/camelot64/kickc/asm/AsmInstruction.java b/src/main/java/dk/camelot64/kickc/asm/AsmInstruction.java index 6c0aa3b66..bee926da7 100644 --- a/src/main/java/dk/camelot64/kickc/asm/AsmInstruction.java +++ b/src/main/java/dk/camelot64/kickc/asm/AsmInstruction.java @@ -7,12 +7,11 @@ public class AsmInstruction implements AsmLine { private String parameter; - private int invocationCountEstimate; + private int index; - public AsmInstruction(AsmInstructionType type, String parameter, int invocationCountEstimate) { + public AsmInstruction(AsmInstructionType type, String parameter) { this.type = type; this.parameter = parameter; - this.invocationCountEstimate = invocationCountEstimate; } public String getParameter() { @@ -33,16 +32,6 @@ public class AsmInstruction implements AsmLine { return type.getCycles(); } - @Override - public int getInvocationCountEstimate() { - return invocationCountEstimate; - } - - @Override - public double getEstimatedTotalCycles() { - return getInvocationCountEstimate()*getLineCycles(); - } - @Override public String getAsm() { return type.getAsm(parameter); @@ -53,4 +42,13 @@ public class AsmInstruction implements AsmLine { return getAsm(); } + @Override + public int getIndex() { + return index; + } + + @Override + public void setIndex(int index) { + this.index = index; + } } diff --git a/src/main/java/dk/camelot64/kickc/asm/AsmLabel.java b/src/main/java/dk/camelot64/kickc/asm/AsmLabel.java index f1fe05568..098efbb18 100644 --- a/src/main/java/dk/camelot64/kickc/asm/AsmLabel.java +++ b/src/main/java/dk/camelot64/kickc/asm/AsmLabel.java @@ -5,6 +5,8 @@ public class AsmLabel implements AsmLine { private String label; + private int index; + public AsmLabel(String label) { this.label = label; } @@ -23,21 +25,21 @@ public class AsmLabel implements AsmLine { return 0; } - @Override - public int getInvocationCountEstimate() { - return 0; - } - - @Override - public double getEstimatedTotalCycles() { - return 0; - } - @Override public String getAsm() { return label+":"; } + @Override + public int getIndex() { + return index; + } + + @Override + public void setIndex(int index) { + this.index = index; + } + @Override public String toString() { return getAsm(); diff --git a/src/main/java/dk/camelot64/kickc/asm/AsmLine.java b/src/main/java/dk/camelot64/kickc/asm/AsmLine.java index 1fcfb2c6b..0023bcad8 100644 --- a/src/main/java/dk/camelot64/kickc/asm/AsmLine.java +++ b/src/main/java/dk/camelot64/kickc/asm/AsmLine.java @@ -7,10 +7,9 @@ public interface AsmLine { public double getLineCycles(); - public int getInvocationCountEstimate(); - - public double getEstimatedTotalCycles(); - public String getAsm(); + public int getIndex(); + + void setIndex(int index); } diff --git a/src/main/java/dk/camelot64/kickc/asm/AsmProgram.java b/src/main/java/dk/camelot64/kickc/asm/AsmProgram.java index 1b9816ebe..7b0950e61 100644 --- a/src/main/java/dk/camelot64/kickc/asm/AsmProgram.java +++ b/src/main/java/dk/camelot64/kickc/asm/AsmProgram.java @@ -10,8 +10,11 @@ public class AsmProgram { private List lines; + private int nextIndex; + public AsmProgram() { this.lines = new ArrayList<>(); + this.nextIndex = 0; } public List getLines() { @@ -19,6 +22,7 @@ public class AsmProgram { } public void addLine(AsmLine line) { + line.setIndex(nextIndex++); lines.add(line); } @@ -32,7 +36,7 @@ public class AsmProgram { public void addInstruction(String mnemonic, AsmAddressingMode addressingMode, String parameter) { AsmInstructionType instructionType = AsmInstuctionSet.getInstructionType(mnemonic, addressingMode, parameter); - addLine(new AsmInstruction(instructionType, parameter, 1)); + addLine(new AsmInstruction(instructionType, parameter)); } public String toString(boolean comments) {