Исправления и оптимизация
This commit is contained in:
parent
6ead777ba3
commit
b1d8591410
@ -26,7 +26,7 @@ import javax.swing.text.Utilities;
|
|||||||
* Îńíîâíŕ˙ ďŕíĺëü ďđčëîćĺíč˙.
|
* Îńíîâíŕ˙ ďŕíĺëü ďđčëîćĺíč˙.
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class AnalyzerPanel extends JPanel {
|
public final class AnalyzerPanel extends JPanel {
|
||||||
|
|
||||||
private JLabel lineNumberLabel;
|
private JLabel lineNumberLabel;
|
||||||
private JTextPane textPane;
|
private JTextPane textPane;
|
||||||
|
@ -7,7 +7,7 @@ import java.util.ArrayList;
|
|||||||
* Êîíâåðòåð äèðåêòèâ.
|
* Êîíâåðòåð äèðåêòèâ.
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class DirectiveConverter {
|
public final class DirectiveConverter {
|
||||||
|
|
||||||
private static final Directive[] DIRECTIVES = {
|
private static final Directive[] DIRECTIVES = {
|
||||||
new Comma(),
|
new Comma(),
|
||||||
@ -24,9 +24,9 @@ public class DirectiveConverter {
|
|||||||
* @return èäåíòèôèêàòîð äèðåêòèâû.
|
* @return èäåíòèôèêàòîð äèðåêòèâû.
|
||||||
*/
|
*/
|
||||||
public static int convert(String text) {
|
public static int convert(String text) {
|
||||||
for (int i = 0; i < DIRECTIVES.length; i++) {
|
for (Directive dir : DIRECTIVES) {
|
||||||
if (DIRECTIVES[i].isDirective(text)) {
|
if (dir.isDirective(text)) {
|
||||||
return DIRECTIVES[i].getId();
|
return dir.getId();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ package com.annimon.asm;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class LexicLine {
|
public final class LexicLine {
|
||||||
|
|
||||||
int lineNumber;
|
int lineNumber;
|
||||||
int[] line;
|
int[] line;
|
||||||
|
@ -5,9 +5,9 @@ import java.util.ArrayList;
|
|||||||
/**
|
/**
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class LexicTable {
|
public final class LexicTable {
|
||||||
|
|
||||||
private ArrayList<LexicLine> lexicLines;
|
private final ArrayList<LexicLine> lexicLines;
|
||||||
|
|
||||||
public LexicTable() {
|
public LexicTable() {
|
||||||
lexicLines = new ArrayList<>();
|
lexicLines = new ArrayList<>();
|
||||||
@ -31,7 +31,7 @@ public class LexicTable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder text = new StringBuilder();
|
final StringBuilder text = new StringBuilder();
|
||||||
for(LexicLine lexic : lexicLines) {
|
for(LexicLine lexic : lexicLines) {
|
||||||
text.append(lexic.lineNumber).append(':');
|
text.append(lexic.lineNumber).append(':');
|
||||||
int[] array = lexic.line;
|
int[] array = lexic.line;
|
||||||
|
@ -6,11 +6,11 @@ import com.annimon.asm.directives.ID;
|
|||||||
* Ëåêñè÷åñêèé àíàëèçàòîð.
|
* Ëåêñè÷åñêèé àíàëèçàòîð.
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class LexicalAnalyzer {
|
public final class LexicalAnalyzer {
|
||||||
|
|
||||||
private String[] lines;
|
private final String[] lines;
|
||||||
private LexicTable lexicTable;
|
private final LexicTable lexicTable;
|
||||||
private VarTable varTable;
|
private final VarTable varTable;
|
||||||
|
|
||||||
public LexicalAnalyzer(String text) {
|
public LexicalAnalyzer(String text) {
|
||||||
lines = text.split(System.lineSeparator());
|
lines = text.split(System.lineSeparator());
|
||||||
@ -40,14 +40,14 @@ public class LexicalAnalyzer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void analyzeLine(int lineNumber) {
|
private void analyzeLine(int lineNumber) {
|
||||||
String line = lines[lineNumber];
|
final String line = lines[lineNumber];
|
||||||
// Åñëè ñòðîêà íå ñîäåðæèò êîìàíä - ïðîïóñêàåì.
|
// Åñëè ñòðîêà íå ñîäåðæèò êîìàíä - ïðîïóñêàåì.
|
||||||
if (line.isEmpty()) return;
|
if (line.isEmpty()) return;
|
||||||
String[] parts = DirectiveConverter.split(line);
|
String[] parts = DirectiveConverter.split(line);
|
||||||
|
|
||||||
// Êîíâåðòèðóåì äèðåêòèâû â ñîîòâåòñòâóþùèå èì èäåíòèôèêàòîðû.
|
// Êîíâåðòèðóåì äèðåêòèâû â ñîîòâåòñòâóþùèå èì èäåíòèôèêàòîðû.
|
||||||
int length = parts.length;
|
final int length = parts.length;
|
||||||
int[] lexicIds = new int[length];
|
final int[] lexicIds = new int[length];
|
||||||
for (int i = 0; i < length; i++) {
|
for (int i = 0; i < length; i++) {
|
||||||
lexicIds[i] = DirectiveConverter.convert(parts[i].trim());
|
lexicIds[i] = DirectiveConverter.convert(parts[i].trim());
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ import com.annimon.asm.directives.ID;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class ListingGenerateHelper {
|
public final class ListingGenerateHelper {
|
||||||
|
|
||||||
private static final String[] SEGMENT_REGISTERS = {
|
private static final String[] SEGMENT_REGISTERS = {
|
||||||
"es", "cs", "ss", "ds"
|
"es", "cs", "ss", "ds"
|
||||||
@ -40,10 +40,10 @@ public class ListingGenerateHelper {
|
|||||||
* @return ñòðîêà "LL HH" ëèáî "XX" â çàâèñèìîñòè îò ðàçìåðà.
|
* @return ñòðîêà "LL HH" ëèáî "XX" â çàâèñèìîñòè îò ðàçìåðà.
|
||||||
*/
|
*/
|
||||||
public static String toLittleEndianString(String text) {
|
public static String toLittleEndianString(String text) {
|
||||||
Integer value = DirectiveConverter.parseInteger(text);
|
final Integer value = DirectiveConverter.parseInteger(text);
|
||||||
if (value == null) return "";
|
if (value == null) return "";
|
||||||
|
|
||||||
if ( (-128 <= value.intValue()) && (value.intValue() <= 255) ) {
|
if ( (-128 <= value) && (value <= 255) ) {
|
||||||
return toHexString(value);
|
return toHexString(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,7 +75,7 @@ public class ListingGenerateHelper {
|
|||||||
* @return êîä ðåãèñòðà (3 áèòà).
|
* @return êîä ðåãèñòðà (3 áèòà).
|
||||||
*/
|
*/
|
||||||
public static byte getRegisterCode(String register) {
|
public static byte getRegisterCode(String register) {
|
||||||
String reg = register.toLowerCase();
|
final String reg = register.toLowerCase();
|
||||||
|
|
||||||
switch (reg) {
|
switch (reg) {
|
||||||
case "ax": case "al": return 0b000;
|
case "ax": case "al": return 0b000;
|
||||||
@ -97,7 +97,7 @@ public class ListingGenerateHelper {
|
|||||||
* @return êîä ñåãìåíòíîãî ðåãèñòðà, ëèáî -1, åñëè ðåãèñòð íå ñåãìåíòíûé.
|
* @return êîä ñåãìåíòíîãî ðåãèñòðà, ëèáî -1, åñëè ðåãèñòð íå ñåãìåíòíûé.
|
||||||
*/
|
*/
|
||||||
public static byte getSegmentRegisterCode(String register) {
|
public static byte getSegmentRegisterCode(String register) {
|
||||||
String reg = register.toLowerCase();
|
final String reg = register.toLowerCase();
|
||||||
for (byte i = 0; i < SEGMENT_REGISTERS.length; i++) {
|
for (byte i = 0; i < SEGMENT_REGISTERS.length; i++) {
|
||||||
if (reg.equals(SEGMENT_REGISTERS[i])) return i;
|
if (reg.equals(SEGMENT_REGISTERS[i])) return i;
|
||||||
}
|
}
|
||||||
|
@ -13,16 +13,16 @@ import com.annimon.asm.directives.Variable;
|
|||||||
* Ãåíåðèðîâàíèå ëèñòèíãà.
|
* Ãåíåðèðîâàíèå ëèñòèíãà.
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class ListingGenerator {
|
public final class ListingGenerator {
|
||||||
|
|
||||||
private static final IListingGenerator[] DIRECTIVES = {
|
private static final IListingGenerator[] DIRECTIVES = {
|
||||||
new Variable(),
|
new Variable(),
|
||||||
new Add(), new Mul(), new Pop(), new Push(), new Idiv()
|
new Add(), new Mul(), new Pop(), new Push(), new Idiv()
|
||||||
};
|
};
|
||||||
|
|
||||||
private LexicTable lexicTable;
|
private final LexicTable lexicTable;
|
||||||
private VarTable varTable;
|
private final VarTable varTable;
|
||||||
private String[] lines;
|
private final String[] lines;
|
||||||
|
|
||||||
public ListingGenerator(LexicTable lexicTable, VarTable varTable, String[] lines) {
|
public ListingGenerator(LexicTable lexicTable, VarTable varTable, String[] lines) {
|
||||||
this.lexicTable = lexicTable;
|
this.lexicTable = lexicTable;
|
||||||
@ -31,7 +31,7 @@ public class ListingGenerator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String generate() {
|
public String generate() {
|
||||||
StringBuilder text = new StringBuilder();
|
final StringBuilder text = new StringBuilder();
|
||||||
short offset = VarTable.getOffset();
|
short offset = VarTable.getOffset();
|
||||||
|
|
||||||
for (int i = 0; i < lexicTable.getSize(); i++) {
|
for (int i = 0; i < lexicTable.getSize(); i++) {
|
||||||
@ -53,8 +53,8 @@ public class ListingGenerator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String generateLine(int lineNumber, int[] lexic, String[] parts) {
|
private String generateLine(int lineNumber, int[] lexic, String[] parts) {
|
||||||
for (int i = 0; i < DIRECTIVES.length; i++) {
|
for (IListingGenerator dir : DIRECTIVES) {
|
||||||
String text = DIRECTIVES[i].generate(lineNumber, lexic, parts, varTable);
|
String text = dir.generate(lineNumber, lexic, parts, varTable);
|
||||||
if (!text.isEmpty()) return text;
|
if (!text.isEmpty()) return text;
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
|
@ -5,7 +5,7 @@ import javax.swing.JFrame;
|
|||||||
/**
|
/**
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class Main extends JFrame {
|
public final class Main extends JFrame {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
new Main().setVisible(true);
|
new Main().setVisible(true);
|
||||||
|
@ -13,14 +13,14 @@ import com.annimon.asm.exceptions.ExceptionWithLineNumber;
|
|||||||
* Ñèíòàêñè÷åñêèé àíàëèçàòîð.
|
* Ñèíòàêñè÷åñêèé àíàëèçàòîð.
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class SyntaxAnalyzer {
|
public final class SyntaxAnalyzer {
|
||||||
|
|
||||||
private static final ISyntaxChecker[] DIRECTIVES = {
|
private static final ISyntaxChecker[] DIRECTIVES = {
|
||||||
new Add(), new Mul(), new Push(), new Pop(), new Idiv(),
|
new Add(), new Mul(), new Push(), new Pop(), new Idiv(),
|
||||||
new Variable()
|
new Variable()
|
||||||
};
|
};
|
||||||
|
|
||||||
private LexicTable lexicTable;
|
private final LexicTable lexicTable;
|
||||||
|
|
||||||
public SyntaxAnalyzer(LexicTable lexicTable) {
|
public SyntaxAnalyzer(LexicTable lexicTable) {
|
||||||
this.lexicTable = lexicTable;
|
this.lexicTable = lexicTable;
|
||||||
@ -34,8 +34,8 @@ public class SyntaxAnalyzer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void analyzeLine(int lineNumber, int[] lexic) throws ExceptionWithLineNumber {
|
private void analyzeLine(int lineNumber, int[] lexic) throws ExceptionWithLineNumber {
|
||||||
for (int i = 0; i < DIRECTIVES.length; i++) {
|
for (ISyntaxChecker dir : DIRECTIVES) {
|
||||||
if (DIRECTIVES[i].check(lineNumber, lexic)) {
|
if (dir.check(lineNumber, lexic)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ package com.annimon.asm;
|
|||||||
* Êëàññ ïåðåìåííîé.
|
* Êëàññ ïåðåìåííîé.
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class Var {
|
public final class Var {
|
||||||
|
|
||||||
String name;
|
String name;
|
||||||
int type;
|
int type;
|
||||||
|
@ -7,10 +7,10 @@ import java.util.ArrayList;
|
|||||||
* Òàáëèöà ïåðåìåííûõ.
|
* Òàáëèöà ïåðåìåííûõ.
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class VarTable {
|
public final class VarTable {
|
||||||
|
|
||||||
private ArrayList<Var> variables;
|
|
||||||
private static short offset;
|
private static short offset;
|
||||||
|
private final ArrayList<Var> variables;
|
||||||
|
|
||||||
public VarTable() {
|
public VarTable() {
|
||||||
variables = new ArrayList<>();
|
variables = new ArrayList<>();
|
||||||
|
@ -12,7 +12,7 @@ import com.annimon.asm.exceptions.WrongArgumentException;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class Add extends Directive implements ISyntaxChecker, IListingGenerator {
|
public final class Add extends Directive implements ISyntaxChecker, IListingGenerator {
|
||||||
|
|
||||||
public Add() {
|
public Add() {
|
||||||
super("add", ID.ADD);
|
super("add", ID.ADD);
|
||||||
|
@ -4,7 +4,7 @@ package com.annimon.asm.directives;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class ByteRegister extends Register {
|
public final class ByteRegister extends Register {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getId() {
|
public int getId() {
|
||||||
|
@ -4,7 +4,7 @@ package com.annimon.asm.directives;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class ByteValue extends NumericValue {
|
public final class ByteValue extends NumericValue {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getId() {
|
public int getId() {
|
||||||
|
@ -4,7 +4,7 @@ package com.annimon.asm.directives;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class Comma extends Directive {
|
public final class Comma extends Directive {
|
||||||
|
|
||||||
public Comma() {
|
public Comma() {
|
||||||
super(",", ID.COMMA);
|
super(",", ID.COMMA);
|
||||||
|
@ -4,7 +4,7 @@ package com.annimon.asm.directives;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class DB extends Directive {
|
public final class DB extends Directive {
|
||||||
|
|
||||||
public DB() {
|
public DB() {
|
||||||
super("db", ID.DB);
|
super("db", ID.DB);
|
||||||
|
@ -4,7 +4,7 @@ package com.annimon.asm.directives;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class DW extends Directive {
|
public final class DW extends Directive {
|
||||||
|
|
||||||
public DW() {
|
public DW() {
|
||||||
super("dw", ID.DW);
|
super("dw", ID.DW);
|
||||||
|
@ -11,7 +11,7 @@ import com.annimon.asm.exceptions.WrongArgumentException;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class Idiv extends Directive implements ISyntaxChecker, IListingGenerator {
|
public final class Idiv extends Directive implements ISyntaxChecker, IListingGenerator {
|
||||||
|
|
||||||
public Idiv() {
|
public Idiv() {
|
||||||
super("idiv", ID.IDIV);
|
super("idiv", ID.IDIV);
|
||||||
@ -36,7 +36,6 @@ public class Idiv extends Directive implements ISyntaxChecker, IListingGenerator
|
|||||||
if (ids[0] != getId()) return "";
|
if (ids[0] != getId()) return "";
|
||||||
|
|
||||||
// MUL r/m 1111011w | mod111r/m
|
// MUL r/m 1111011w | mod111r/m
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
int val = 0b1111011_0;
|
int val = 0b1111011_0;
|
||||||
if ( (ids[1] == ID.REGISTER_WORD) || (ids[1] == ID.VAR_WORD) ) {
|
if ( (ids[1] == ID.REGISTER_WORD) || (ids[1] == ID.VAR_WORD) ) {
|
||||||
val |= 1;
|
val |= 1;
|
||||||
@ -68,6 +67,7 @@ public class Idiv extends Directive implements ISyntaxChecker, IListingGenerator
|
|||||||
regID <<= 3;
|
regID <<= 3;
|
||||||
modrm |= regID;
|
modrm |= regID;
|
||||||
|
|
||||||
|
final StringBuilder sb = new StringBuilder();
|
||||||
sb.append(ListingGenerateHelper.toHexString(val))
|
sb.append(ListingGenerateHelper.toHexString(val))
|
||||||
.append(' ')
|
.append(' ')
|
||||||
.append(ListingGenerateHelper.toHexString(modrm))
|
.append(ListingGenerateHelper.toHexString(modrm))
|
||||||
|
@ -4,7 +4,7 @@ package com.annimon.asm.directives;
|
|||||||
* Íåîïðåäåë¸ííîå çíà÷åíèå (?)
|
* Íåîïðåäåë¸ííîå çíà÷åíèå (?)
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class InfinityValue extends NumericValue {
|
public final class InfinityValue extends NumericValue {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getId() {
|
public int getId() {
|
||||||
|
@ -11,7 +11,7 @@ import com.annimon.asm.exceptions.WrongArgumentException;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class Mul extends Directive implements ISyntaxChecker, IListingGenerator {
|
public final class Mul extends Directive implements ISyntaxChecker, IListingGenerator {
|
||||||
|
|
||||||
public Mul() {
|
public Mul() {
|
||||||
super("mul", ID.MUL);
|
super("mul", ID.MUL);
|
||||||
@ -36,7 +36,6 @@ public class Mul extends Directive implements ISyntaxChecker, IListingGenerator
|
|||||||
if (ids[0] != getId()) return "";
|
if (ids[0] != getId()) return "";
|
||||||
|
|
||||||
// MUL r/m 1111011w | mod100r/m
|
// MUL r/m 1111011w | mod100r/m
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
int val = 0b1111011_0;
|
int val = 0b1111011_0;
|
||||||
if ( (ids[1] == ID.REGISTER_WORD) || (ids[1] == ID.VAR_WORD) ) {
|
if ( (ids[1] == ID.REGISTER_WORD) || (ids[1] == ID.VAR_WORD) ) {
|
||||||
val |= 1;
|
val |= 1;
|
||||||
@ -68,6 +67,7 @@ public class Mul extends Directive implements ISyntaxChecker, IListingGenerator
|
|||||||
regID <<= 3;
|
regID <<= 3;
|
||||||
modrm |= regID;
|
modrm |= regID;
|
||||||
|
|
||||||
|
final StringBuilder sb = new StringBuilder();
|
||||||
sb.append(ListingGenerateHelper.toHexString(val))
|
sb.append(ListingGenerateHelper.toHexString(val))
|
||||||
.append(' ')
|
.append(' ')
|
||||||
.append(ListingGenerateHelper.toHexString(modrm))
|
.append(ListingGenerateHelper.toHexString(modrm))
|
||||||
|
@ -10,7 +10,7 @@ import com.annimon.asm.exceptions.WrongArgumentException;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class Pop extends Directive implements ISyntaxChecker, IListingGenerator {
|
public final class Pop extends Directive implements ISyntaxChecker, IListingGenerator {
|
||||||
|
|
||||||
public Pop() {
|
public Pop() {
|
||||||
super("pop", ID.POP);
|
super("pop", ID.POP);
|
||||||
|
@ -10,7 +10,7 @@ import com.annimon.asm.exceptions.WrongArgumentException;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class Push extends Directive implements ISyntaxChecker, IListingGenerator {
|
public final class Push extends Directive implements ISyntaxChecker, IListingGenerator {
|
||||||
|
|
||||||
public Push() {
|
public Push() {
|
||||||
super("push", ID.PUSH);
|
super("push", ID.PUSH);
|
||||||
|
@ -12,7 +12,7 @@ import java.util.regex.Pattern;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class Variable extends Directive implements ISyntaxChecker, IListingGenerator {
|
public final class Variable extends Directive implements ISyntaxChecker, IListingGenerator {
|
||||||
|
|
||||||
public Variable() {
|
public Variable() {
|
||||||
super("", ID.VAR);
|
super("", ID.VAR);
|
||||||
|
@ -4,7 +4,7 @@ package com.annimon.asm.directives;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class WordRegister extends Register {
|
public final class WordRegister extends Register {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getId() {
|
public int getId() {
|
||||||
|
@ -4,7 +4,7 @@ package com.annimon.asm.directives;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class WordValue extends NumericValue {
|
public final class WordValue extends NumericValue {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getId() {
|
public int getId() {
|
||||||
|
@ -4,7 +4,7 @@ package com.annimon.asm.exceptions;
|
|||||||
* Êëàññ îøèáêè ïðîïóùåííîé çàïÿòîé.
|
* Êëàññ îøèáêè ïðîïóùåííîé çàïÿòîé.
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class CommaExpectedException extends ExceptionWithLineNumber {
|
public final class CommaExpectedException extends ExceptionWithLineNumber {
|
||||||
|
|
||||||
public CommaExpectedException(int lineNumber) {
|
public CommaExpectedException(int lineNumber) {
|
||||||
super("Comma expected", lineNumber);
|
super("Comma expected", lineNumber);
|
||||||
|
@ -6,7 +6,7 @@ package com.annimon.asm.exceptions;
|
|||||||
*/
|
*/
|
||||||
public abstract class ExceptionWithLineNumber extends Exception {
|
public abstract class ExceptionWithLineNumber extends Exception {
|
||||||
|
|
||||||
private int lineNumber;
|
private final int lineNumber;
|
||||||
|
|
||||||
public ExceptionWithLineNumber(String message, int lineNumber) {
|
public ExceptionWithLineNumber(String message, int lineNumber) {
|
||||||
super(message);
|
super(message);
|
||||||
|
@ -4,7 +4,7 @@ package com.annimon.asm.exceptions;
|
|||||||
* Êëàññ îøèáêè, êîãäà óêàçàíî ñëèøêîì ìàëî àðãóìåíòîâ êîìàíäû, íåæåëè îæèäàëîñü.
|
* Êëàññ îøèáêè, êîãäà óêàçàíî ñëèøêîì ìàëî àðãóìåíòîâ êîìàíäû, íåæåëè îæèäàëîñü.
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class FewArgumentsException extends ExceptionWithLineNumber {
|
public final class FewArgumentsException extends ExceptionWithLineNumber {
|
||||||
|
|
||||||
public FewArgumentsException(int lineNumber) {
|
public FewArgumentsException(int lineNumber) {
|
||||||
super("Few arguments", lineNumber);
|
super("Few arguments", lineNumber);
|
||||||
|
@ -4,7 +4,7 @@ package com.annimon.asm.exceptions;
|
|||||||
* Êëàññ îøèáêè äëÿ ïðåâûøåííîãî êîëè÷åñòâà àðãóìåíòîâ êîìàíäû.
|
* Êëàññ îøèáêè äëÿ ïðåâûøåííîãî êîëè÷åñòâà àðãóìåíòîâ êîìàíäû.
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class TooManyArgumentsException extends ExceptionWithLineNumber {
|
public final class TooManyArgumentsException extends ExceptionWithLineNumber {
|
||||||
|
|
||||||
public TooManyArgumentsException(int lineNumber) {
|
public TooManyArgumentsException(int lineNumber) {
|
||||||
super("Too many arguments", lineNumber);
|
super("Too many arguments", lineNumber);
|
||||||
|
@ -4,7 +4,7 @@ package com.annimon.asm.exceptions;
|
|||||||
* Êëàññ îøèáêè íåâåðíîãî àðãóìåíòà, êîãäà íå ñîâïàäàåò îæèäàåìûé òèï.
|
* Êëàññ îøèáêè íåâåðíîãî àðãóìåíòà, êîãäà íå ñîâïàäàåò îæèäàåìûé òèï.
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class WrongArgumentException extends ExceptionWithLineNumber {
|
public final class WrongArgumentException extends ExceptionWithLineNumber {
|
||||||
|
|
||||||
public WrongArgumentException(int lineNumber) {
|
public WrongArgumentException(int lineNumber) {
|
||||||
super("Wrong argument", lineNumber);
|
super("Wrong argument", lineNumber);
|
||||||
|
Loading…
Reference in New Issue
Block a user