awesome-cpus/M68000/MC68000/68000abc.txt

195 lines
5.9 KiB
Plaintext

68000abc.txt
Instruction set of the 68000 in alphabetical order
1988/wjvg
0 2 3 4 5
abcd Ds,Dd 1100 ddd100 000sss
abcd -(As),-(Ad) 1100 ddd100 001sss
add.z a,Dd 1101 ddd0zz aaaaaa
add.z Ds,a 1101 sss1zz aaaaaa
adda.z a,Ad 1101 dddz11 aaaaaa
addi.z #kz,a 0000 0110zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk
addq.z #k3,a 0101 kkk0zz aaaaaa
addx.z Ds,Dd 1101 ddd1zz 000sss
addx.z -(As),-(Ad) 1101 ddd1zz 001sss
and.z a,Dd 1100 ddd0zz aaaaaa
and.z Ds,a 1100 sss1zz aaaaaa
andi.z #kz,a 0000 0010zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk
asld.z Ds,Dd 1110 sss1zz 100ddd
asld.z #k,Dd 1110 kkk1zz 000ddd
asld.w #1,a 1110 000111 aaaaaa
asrd.z Ds,Dd 1110 sss0zz 100ddd
asrd.z #k,Dd 1110 kkk0zz 000ddd
asrd.w #1,a 1110 000011 aaaaaa
bcc label 0110 ccccll llllll if zero, a 16bit address follows
bra label 0110 0000ll llllll if zero, a 16bit address follows
bsr label 0110 0001ll llllll if zero, a 16bit address follows
bchg #n,a 0000 100001 aaaaaa 00000000 000nnnnn
bchg Ds,a 0000 sss101 aaaaaa
bclr #n,a 0000 100010 aaaaaa 00000000 000nnnnn
bclr Ds,a 0000 sss110 aaaaaa
bset #n,a 0000 100011 aaaaaa 00000000 000nnnnn
bset Ds,a 0000 sss111 aaaaaa
btst #n,a 0000 100000 aaaaaa 00000000 000nnnnn
btst Ds,a 0000 sss100 aaaaaa
chk.w a,Dd 0100 ddd110 aaaaaa
clr.z a 0100 0010zz aaaaaa
cmp.z a,Dd 1011 ddd0zz aaaaaa
cmpa.z a,Ad 1011 dddz11 aaaaaa
cmpi.z #kz,a 0000 1100zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk
cmpm.z Ds,Dd 1011 ddd1zz 000sss
cmpm.z (As)+,(Ad)+ 1011 ddd1zz 001sss
db(cc) Ds,label 0101 cccc11 001sss llllllll llllllll
divs.w a,Dd 1000 ddd111 aaaaaa
divu.w a,Dd 1000 ddd011 aaaaaa
eor.z a,Dd 1011 ddd1zz aaaaaa
eori.z #kz,a 0000 1010zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk
exg.l As,Ad 1100 ddd101 001sss
exg.l Ds,Dd 1100 ddd101 000sss
exg.l As,Dd 1100 ddd110 001sss
ext.z Dd 0100 10001z 000ddd
jmp a 0100 111011 aaaaaa
jsr a 0100 111010 aaaaaa
lea a,Ad 0100 ddd111 aaaaaa
link As,d16 0100 111001 010sss dddddddd dddddddd
lsld.z Ds,Dd 1110 sss1zz 101ddd
lsld.z #k,Dd 1110 kkk1zz 001ddd
lsld.w #1,a 1110 001111 aaaaaa
lsrd.z Ds,Dd 1110 sss0zz 101ddd
lsrd.z #k,Dd 1110 kkk0zz 001ddd
lsrd.w #1,a 1110 001011 aaaaaa
move SR,a 0100 000011 aaaaaa
move a,CCR 0100 010011 aaaaaa
move a,SR 0100 011011 aaaaaa
move As,USP 0100 111001 100sss
move USP,Ad 0100 111001 101ddd
move.b as,ad 0001 dddddd ssssss (dddddd reversed)
move.l as,ad 0010 dddddd ssssss (dddddd reversed)
move.w as,ad 0011 dddddd ssssss (dddddd reversed)
movem.z a,reg-list 0100 11001z aaaaaa a6543210 d6543210
movem.z reg-list,a 0100 10001z aaaaaa a6543210 d6543210
movep.z Ds,d16(Ad) 0000 sss11z 001ddd dddddddd dddddddd
movep.z d16(As),Dd 0000 ddd10z 001sss dddddddd dddddddd
moveq.l #k8,Dd 0111 ddd0kk kkkkkk
muls.w a,Dd 1100 ddd111 aaaaaa
mulu.w a,Dd 1100 ddd011 aaaaaa
nbcd a 0100 100000 aaaaaa
neg.z a 0100 0100zz aaaaaa
negx.z a 0100 0000zz aaaaaa
nop 0100 111001 110001
not.z a 0100 0110zz aaaaaa
or.z a,Dd 1000 ddd0zz aaaaaa
or.z Ds,a 1000 sss1zz aaaaaa
ori.z #kz,a 0000 0000zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk
pea a 0100 100001 aaaaaa
reset 0100 111001 110000
rold.z Ds,Dd 1110 sss1zz 111ddd
rold.z #k,Dd 1110 kkk1zz 011ddd
rold.w #1,a 1110 011111 aaaaaa
rord.z Ds,Dd 1110 sss0zz 111ddd
rord.z #k,Dd 1110 kkk0zz 011ddd
rord.w #1,a 1110 011011 aaaaaa
roxld.z Ds,Dd 1110 sss1zz 110ddd
roxld.z #k,Dd 1110 kkk1zz 010ddd
roxld.w #1,a 1110 010111 aaaaaa
roxrd.z Ds,Dd 1110 sss0zz 110ddd
roxrd.z #k,Dd 1110 kkk0zz 010ddd
roxrd.w #1,a 1110 010011 aaaaaa
rte 0100 111001 110011
rtr 0100 111001 110111
rts 0100 111001 110101
sbcd Ds,Dd 1000 ddd100 000sss
sbcd -(As),-(Ad) 1000 ddd100 001sss
stcc.b a 0101 cccc11 aaaaaa
stop #k16 0100 111001 110010 kkkkkkkk kkkkkkkk
sub.z Ds,a 1001 sss1zz aaaaaa
sub.z a,Dd 1001 ddd0zz aaaaaa
subi.z #kz,a 0000 0100zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk
suba.z a,Ad 1001 dddz11 aaaaaa
subq.z #k3,a 0101 kkk1zz aaaaaa
subx.z Ds,Dd 1001 ddd1zz 000sss
subx.z -(As),-(Ad) 1001 ddd1zz 001sss
swap.w Dd 0100 100001 000ddd
tas.b a 0100 101011 aaaaaa
trap vector 0100 111001 00vvvv
trapv 0100 111001 110110
tst.z a 0100 1010zz aaaaaa
unlk Ad 0100 111001 011ddd
general subfields
zz 00=b, 01=w, 10=l
z 0=w, 1=l
kkk immediate data in addq etc.: 0==8
immediate data in movq is sign extended to 32bits
shift count also represents 1..8 (how?)
addresssing modes (aaaaaa):
000 rrr Dr
001 rrr Ar
010 rrr (Ar)
011 rrr (Ar)+
100 rrr -(Ar)
101 rrr d16(Ar) dddddddd dddddddd
110 rrr d8(Ar,ix) aiiiz000 dddddddd
111 000 addr16 dddddddd dddddddd
111 001 addr32 dddddddd dddddddd ddddddddd dddddddd
111 010 d16(PC) dddddddd dddddddd
111 011 d8(PC,ix) aiiiz000 dddddddd
111 100 imm/implied
flags:
0000 t allways or bra ipv btr
0001 f never or bsr ipv bnv
0010 hi
0011 ls
0100 cc
0101 cs
0110 ne
0111 eq
1000 vc
1001 vs
1010 pl
1011 mi
1100 ge
1101 lt
1110 gt
1111 le