Re: A89: ASM Keywords
[Prev][Next][Index][Thread]
Re: A89: ASM Keywords
> I'm working on syntax coloring for my IDE. I have all C keywords, but can
> someone please mail me a complete list of all commands supported by 68k
ASM.
First off, you really, really, really need to add support for ASM Macros
into the IDE. It's useless for ASM coding otherwise (both for convenience
and for anyone who wants to use ROM_CALL or tios::DEREF). If this causes a
problem you may have to add support for them into the IDE itself, rather
than the assembler/linker.
The format, if you don't already know it:
Lable: macro
;Instructions here, using \[num]
;to reference specific parameters.
;For example:
move.w \3,d0
endm
Then, a few more options that would be nice:
* ability to display line numbers (to left of instructions - turn on or off)
* keyboard mapping (ie, let me make ctrl+r the same as edit->replace -- but
let the user choose the shortcut keys
* run external progs (make a menu where I can select, say, VTI, and have it
run the emu) and allow the progs on the menu to be set up by the user
* a help file for the IDE, not just TI-GCC lib
* allow certain preferences - such as tab width - to be set along with each
project
* once you have all this in, an ASM "code counter" is a must - highlight a
block of code, then press the code counter button, and the size/time will be
counted. Even better, in ASM files, allow it to display the size and timing
of each instruction just to the left of it, like next to the line numbers
For an excellent example of these features, see PFE -
http://www.lancs.ac.uk/people/cpaap/pfe - it's an MDI text editor with many
of these features.
Not so sure I like the project view as opposed to an MDI interface (such as
in mirc), but I guess I could get used to it if it offers real
functionality.
Now, for your listing of ASM opcodes -
(all take two operands unless otherwise specified,
opcodes with .W are word length ONLY)
DATA MOVEMENT
------------------
EXG
LEA
LINK
MOVE
MOVEA
MOVEM
MOVEP
MOVEQ
PEA [one operand]
UNLK
INTEGER ARITHMETIC
------------------
ADD
ADDA
ADDI
ADDQ
ADDX
CLR [one operand]
CMP
CMPA
CMPI
CMPM
DIVS.W
DIVU.W
EXT [one operand]
MULS.W
MULU.W
NEG [one operand]
NEGX [one operand]
SUB
SUBA
SUBI
SUBQ
SUBX
LOGICAL INSTRUCTIONS
------------------
AND
ANDI
EOR
EORI
NOT [one operand]
OR
ORI
SHIFT/ROTATION INSTRUCTIONS
------------------
ASL [one or two operands]
ASR [one or two operands]
LSL [one or two operands]
LSR [one or two operands]
ROL [one or two operands]
ROR [one or two operands]
ROXL [one or two operands]
ROXR [one or two operands]
SWAP [one operand]
BIT MANIPULATION INSTRUCTIONS
------------------
BCHG
BCLR
BSET
BTST
PROGRAM CONTROL INSTRUCTIONS
------------------
BCC [one operand]
BLS [one operand]
BCS [one operand]
BLT [one operand]
BEQ [one operand]
BMI [one operand]
BNE [one operand]
BGE [one operand]
BPL [one operand]
BGT [one operand]
BHI [one operand]
BVC [one operand]
BLE [one operand]
BVS [one operand]
DBCC
DBLS
DBCS
DBLT
DBEQ
DBMI
DBF
DBNE
DBGE
DBPL
DBGT
DBT
DBHI
DBVC
DBLE
DBVS
SCC [one operand]
SLS [one operand]
SCS [one operand]
SLT [one operand]
SEQ [one operand]
SMI [one operand]
SF [one operand]
SNE [one operand]
SGE [one operand]
SPL [one operand]
SGT [one operand]
ST [one operand]
SHI [one operand]
SVC [one operand]
SLE [one operand]
SVS [one operand]
BRA [one operand]
BSR [one operand]
JSR [one operand]
NOP [no operands]
RTR [no operands]
RTS [no operands]
TST [one operand]
SYSTEM CONTROL INSTRUCTIONS
------------------
RTE [no operands]
ILLEGAL [no operands]
TRAP [one operand]
That should sum it up - kinda long. And each of these instructions can be
changed in all kinds of funky ways by the assembler (ie, MOVE to MOVEQ).
And the timing depends on several factors and is very hard to count, which
is why a code counter is so desparately needed. If there's anything else I
can do to help, let me know. . .
-Scott