|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objecthades.models.pic.PicAssembler
A simple assembler for the Arizona Microchip PIC16CXX family of 8-bit microcontrollers. The current version supports:
All in all, this assembler should 'look and feel' more or less like MPASM 2.3, except for the following features:
The symbol table is realized with two Hashtables. The first Hashtable maps symbol (label, opcode, ...) names into values. The second Hashtable maps symbol names into symbol types like T_UNDEFINED, T_OPOCDE, T_LABEL, etc.
Field Summary | |
(package private) int |
current_addr
|
(package private) int[] |
instructionMemory
|
(package private) java.util.Hashtable |
labelTargetTable
|
(package private) int |
max_addr
|
(package private) java.util.Hashtable |
opcodeArgsTable
|
(package private) java.util.Vector |
patchAddressVector
|
(package private) java.util.Vector |
patchLabelVector
|
(package private) java.util.Vector |
rawTokens
|
(package private) java.lang.String |
sourcefilename
|
(package private) java.util.Hashtable |
symbolTable
|
(package private) java.util.Hashtable |
symbolTypeTable
|
static int |
T_EQU
|
static int |
T_INCLUDE
|
static int |
T_LABEL
|
static int |
T_LIST
|
static int |
T_OPCODE
|
static int |
T_ORG
|
static int |
T_SHORTHAND
|
static int |
T_UNDEFINED
|
static int |
T_UNKNOWN
|
Constructor Summary | |
PicAssembler()
|
Method Summary | |
void |
addOpcodeSymbol(java.lang.String key,
java.lang.String value,
int n_args)
call addSymbol with both the String key and a second time with the uppercase-version of key |
void |
addStandaloneLabel(java.lang.String[] tokens)
we just found a Label definition sitting alone on one line. |
void |
addSymbol(java.lang.String key,
java.lang.Object value,
int type)
create a new symbol table entry for key with value. |
void |
addSymbol2(java.lang.String key,
java.lang.Object value,
int type)
call addSymbol with both the String key and a second time with the uppercase-version of key |
void |
codegen()
|
void |
copyright()
|
void |
createPic16C84RegisterNameSymbols()
|
void |
createPic16xxOpcodeSymbols()
|
void |
createPicInstructionMemory()
|
void |
createPicMetaSymbols()
|
void |
createSymbolTable()
|
void |
defineLabel(java.lang.String label,
int address)
try to define a Label Symbol with the Label's target address. |
void |
dumpRawTokens(java.util.Vector rawTokens)
|
void |
dumpSymbolTable(java.io.PrintStream ps)
|
java.lang.String |
flushLeft(java.lang.Object o,
int fieldsize)
|
java.lang.String |
getFilename()
|
int |
getLabelAddress(java.lang.String label)
|
int |
getMemorySize()
|
int |
getNOP()
|
java.io.PrintWriter |
getPrintWriter(java.lang.String suffix)
|
void |
getReader()
|
java.lang.String |
getSymbol(java.lang.String key)
|
int |
getSymbolType(java.lang.String key)
|
void |
handleEquExpression(java.lang.String[] tokens)
|
void |
handleIncludeExpression(java.lang.String[] tokens)
|
void |
handleLabelAndOpcode(java.lang.String[] tokens)
|
void |
handleListExpression(java.lang.String[] tokens)
|
void |
handleOpcode(java.lang.String[] tokens)
|
void |
handleOrgExpression(java.lang.String[] tokens)
|
boolean |
isEquSymbol(java.lang.String key)
|
boolean |
isOpcodeSymbol(java.lang.String key)
|
boolean |
isSymbol(java.lang.String key)
|
static void |
main(java.lang.String[] argv)
|
static void |
msg(java.lang.String s)
|
void |
parse(java.io.BufferedReader reader)
|
int |
parseNumber(java.lang.String s)
try to parse an integer from a string in one of the following reps: [0-9]+ normal decimal number 0b[01]+ binary number 0d[0-9]+ decimal number 0x[0-F]+ hex number b'[01]+' binary number d'[0-9]+' decimal number x'[0-f]+' hex number '[ascii-char]' ascii char .[0-9]+ decimal number [0-f]+h hex number |
void |
patchLabels()
|
void |
printLineTokens(java.lang.String[] tokens)
|
java.lang.String |
printSymbolType(java.lang.String key)
|
void |
setFilename(java.lang.String sourcefilename)
|
void |
setOptions(java.lang.String[] argv)
|
java.lang.String |
stripComments(java.lang.String line)
|
void |
tokenize(java.io.BufferedReader reader)
|
java.lang.String[] |
tokenizeLine(java.lang.String line)
|
void |
usage()
|
void |
writeHex(java.io.PrintWriter writer)
|
void |
writeLabels(java.io.PrintWriter writer)
|
void |
writeRawLabels(java.io.PrintWriter writer)
|
void |
writeRom(java.io.PrintWriter writer)
|
void |
writeSymbolTable(java.io.PrintWriter writer)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
java.util.Hashtable symbolTable
java.util.Hashtable symbolTypeTable
java.util.Hashtable opcodeArgsTable
java.util.Vector rawTokens
int[] instructionMemory
java.util.Hashtable labelTargetTable
java.util.Vector patchAddressVector
java.util.Vector patchLabelVector
int current_addr
int max_addr
java.lang.String sourcefilename
public static final int T_UNDEFINED
public static final int T_UNKNOWN
public static final int T_OPCODE
public static final int T_ORG
public static final int T_EQU
public static final int T_LABEL
public static final int T_SHORTHAND
public static final int T_INCLUDE
public static final int T_LIST
Constructor Detail |
public PicAssembler()
Method Detail |
public int getMemorySize()
public int getNOP()
public void createPicInstructionMemory()
public void createSymbolTable()
public void createPicMetaSymbols()
public void createPic16xxOpcodeSymbols()
public void createPic16C84RegisterNameSymbols()
public void addSymbol(java.lang.String key, java.lang.Object value, int type) throws java.lang.Exception
java.lang.Exception
public void addSymbol2(java.lang.String key, java.lang.Object value, int type) throws java.lang.Exception
java.lang.Exception
public void addOpcodeSymbol(java.lang.String key, java.lang.String value, int n_args) throws java.lang.Exception
java.lang.Exception
public int getSymbolType(java.lang.String key)
public boolean isOpcodeSymbol(java.lang.String key)
public boolean isEquSymbol(java.lang.String key)
public boolean isSymbol(java.lang.String key)
public java.lang.String getSymbol(java.lang.String key)
public java.lang.String printSymbolType(java.lang.String key)
public void dumpSymbolTable(java.io.PrintStream ps)
public void defineLabel(java.lang.String label, int address) throws java.lang.Exception
java.lang.Exception
public int getLabelAddress(java.lang.String label) throws java.lang.Exception
java.lang.Exception
public void parse(java.io.BufferedReader reader)
public void writeRom(java.io.PrintWriter writer) throws java.lang.Exception
java.lang.Exception
public void writeHex(java.io.PrintWriter writer) throws java.lang.Exception
java.lang.Exception
public void writeLabels(java.io.PrintWriter writer) throws java.lang.Exception
java.lang.Exception
public void writeRawLabels(java.io.PrintWriter writer) throws java.lang.Exception
java.lang.Exception
public void writeSymbolTable(java.io.PrintWriter writer) throws java.lang.Exception
java.lang.Exception
public java.lang.String flushLeft(java.lang.Object o, int fieldsize)
public void patchLabels()
public void codegen()
public void addStandaloneLabel(java.lang.String[] tokens) throws java.lang.Exception
java.lang.Exception
public void handleOpcode(java.lang.String[] tokens) throws java.lang.Exception
java.lang.Exception
public void handleLabelAndOpcode(java.lang.String[] tokens) throws java.lang.Exception
java.lang.Exception
public void handleListExpression(java.lang.String[] tokens) throws java.lang.Exception
java.lang.Exception
public void handleIncludeExpression(java.lang.String[] tokens) throws java.lang.Exception
java.lang.Exception
public void handleOrgExpression(java.lang.String[] tokens) throws java.lang.Exception
java.lang.Exception
public void handleEquExpression(java.lang.String[] tokens) throws java.lang.Exception
java.lang.Exception
public void tokenize(java.io.BufferedReader reader)
public void dumpRawTokens(java.util.Vector rawTokens)
public java.lang.String[] tokenizeLine(java.lang.String line)
public void printLineTokens(java.lang.String[] tokens)
public java.lang.String stripComments(java.lang.String line)
public int parseNumber(java.lang.String s)
public void setOptions(java.lang.String[] argv)
public void setFilename(java.lang.String sourcefilename)
public java.lang.String getFilename()
public void getReader()
public java.io.PrintWriter getPrintWriter(java.lang.String suffix) throws java.lang.Exception
java.lang.Exception
public void usage()
public void copyright()
public static void msg(java.lang.String s)
public static void main(java.lang.String[] argv)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |