CYCLES.TXT

From Atari Wiki
Revision as of 14:39, 16 December 2023 by Olivier.jan (talk | contribs)
Jump to navigation Jump to search
SHIZUKA is pleased to present this 68000 cycle table
created in two evening sessions with the valuable help of:

craft2 (stedi)
hard drive (wow, the speed)
"68000 instruction guide, vol 2 by NACHTMANN at PUBLITRONIC"

please distribute this table without modifying the header

effective address calculation

                b/w     l

dn              0       0
an              0       0
(an)            4       8
(an)+           4       8
-(an)           6       10
d16(an)         8       12
d8(an,xi)       10      14
abs.w           8       12
abs.l           12      16
d16(pc)         8       12
d8(pc,x1)       10      14
imm             4       8


move.b and move.w

            dn   an   (an)   (an)+   -(an)   d16(an)  d8(an,xi)   abs.w   abs.l 
dn           4    4    8      8        8       12       14         12      16
an           4    4    8      8        8       12       14         12      16
(an)         8    8    12     12       12      16       18         16      20
(an)+        8    8    12     12       12      16       18         16      20
-(an)        10   10   14     14       14      18       20         18      22
d16(an)      12   12   16     16       16      20       22         20      24
d8(an,xi)    14   14   18     18       18      22       24         22      26
abs.w        12   12   16     16       16      20       22         20      24
abs.l        16   16   20     20       20      24       26         24      28
d16(pc)      12   12   16     16       16      20       22         20      24
d8(pc,x1)    14   14   18     18       18      22       24         22      26
imm          8    8    12     12       12      16       18         16      20

move.l

            dn   an   (an)   (an)+   -(an)   d16(an)  d8(an,xi)   abs.w   abs.l 
dn           4    4    12     12       12      16       18         16      20
an           4    4    12     12       12      16       18         16      20
(an)         12   12   20     20       20      24       26         24      28
(an)+        12   12   20     20       20      24       26         24      28
-(an)        14   14   22     22       22      26       28         26      30
d16(an)      16   16   24     24       24      28       30         28      32 
d8(an,xi)    18   18   26     26       26      30       32         30      34
abs.w        16   16   24     24       24      28       30         28      32
abs.l        20   20   28     28       28      32       34         32      36
d16(pc)      16   16   24     24       24      28       30         28      32
d8(pc,x1)    18   18   26     26       26      30       32         30      34
imm          12   12   20     20       20      24       26         24      28



                op(ea),an       op(ea),dn       op dn,(m)

add.b           -               4+              8+
add.w           8+              4+              8+
add.l           6+&             6+&             12+
and.b           -               4+              8+
and.w           -               4+              8+
and.l           -               6+&             12+
cmp.b           -               4+              -
cmp.w           6+              4+              -
cmp.l           6+              6+              -
divs            -               158+*           -
divu            -               140+*           -
eor.b           -               4+              8+
eor.w           -               4+              8+
eor.l           -               8+              12+
muls            -               70+*            -
mulu            -               70+*            -
or.b            -               4+              8+
or.w            -               4+              8+
or.l            -               6+&             12+
sub.b           -               4+              8+
sub.w           8+              4+              8+
sub.l           6+&             6+&             12+



+ = add the time for calculating the effective address
& = add 2 clock cycles for modes an dn and immediate
* = maximum duration


                op #,dn         op #,an         op #,m

addi.b          8               -               12+
addi.w          8               -               12+
addi.l          16              -               20+
addq.b          4               -               8+
addq.w          4               8               8+
addq.l          8               8               12+
andi.b          8               -               12+
andi.w          8               -               12+
andi.l          16              -               20+
cmpi.b          8               -               8+
cmpi.w          8               -               8+
cmpi.l          14              -               12+
eori.b          8               -               12+
eori.w          8               -               12+
eori.l          16              -               20+
moveq           4               -               -
ori.b           8               -               12+
ori.w           8               -               12+
ori.l           16              -               20+
subi.b          8               -               12+
subi.w          8               -               12+
subi.l          16              -               20+
subq.b          4               -               8+
subq.w          4               8               8+
subq.l          8               8               12+

+ = add the time for calculating the effective address


                register        memory

clr.b           4               8+
clr.w           4               8+
clr.l           6               12+
nbcd            6               8+
neg.b           4               8+
neg.w           4               8+
neg.l           6               12+
negx.b          4               8+
negx.w          4               8+
negx.l          6               12+
not.b           4               8+
not.w           4               8+
not.l           6               12+
scc (cc=0)      4               8+
scc (cc=1)      6               8+
tas             4               10+
tst.b           4               4+
tst.w           4               4+
tst.l           4               4+

+ = add the time for calculating the effective address


                   registers     memory

asr.b & asl.b    6+2n
asr.w & asl.w    6+2n            8+
asr.l & asl.l    8+2n
lsr.b & lsl.b    6+2n
lsr.w & lsl.w    6+2n            8+
lsr.l & lsl.l    8+2n
ror.b & rol.b    6+2n
ror.w & rol.w    6+2n            8+
ror.l & rol.l    8+2n
roxr.b & roxl.b  6+2n
roxr.w & roxl.w  6+2n            8+
roxr.l & roxl.l  8+2n

+ = add the time for calculating the effective address
n is the number of successive rotations or shifts

          dynamic        dynamic         static           static
          register       memory          register         memory

bchg.b        -            8+              -               12+
bchg.l        8*           -               12*             -
bclr.b        -            8+              -               12+
bclr.l        10*          -               14*             -
bset.b        -            8+              -               12+
bset.l        8*           -               12*             -
btst.b        -            4+              -               8+
btst.l        6            -               10              -


+ = add the time for calculating the effective address
* = maximum duration


              branching        no
              executed         branching

bcc.s              10             8
bcc.l              10             12
bra.s              10             -
bra.l              10             -
bsr.s              18             -
bsr.l              18             -
dbcc cc=1          -              12
dbcc cc=0          10             14




         (an)  (an)+  -(an)   16(an) d8(an,xi)  abs.w  abs.l d16(pc) d8(pc,xi)

jmp        8      -     -       10      14        10      12     10     14      
jsr        16     -     -       18      22        18      20     18     22
lea        4      -     -       8       12        8       12     8      12
pea        12     -     -       16      20        16      20     16     20
movem.w    12+4n  12+4n -       16+4n   18+4n     16+4n   20+4n  16+4n  18+4n
(m->r)       
movem.l    12+8n  12+8n -       16+8n   18+8n     16+8n   20+8n  16+8n  18+8n
(m->r)
movem.w    8+4n   -     8+4n    12+4n   14+4n     12+4n   16+4n  -      -
(r->m)
movem.l    8+8n   -     8+8n     12+8n  14+8n     12+8n   16+8n  -      -
(r->m)


n is the number of register transfers to be performed


             op dn,dn      op m,m

addx.b          4            18
addx.w          4            18
addx.l          8            30
cmpm.b          -            12
cmpm.w          -            12
cmpm.l          -            20
subx.b          4            18
subx.w          4            18
subx.l          8            30
abcd            6            18
sbcd            6            18



                68000           68000
                r->m            m->r

movep.w          16               16
movep.l          24               24



                        68000           68000
                        register        memory

andi to ccr                20              -
andi to sr                 20              -
chk (without trap)         10              -
eori to ccr                20              -
eori to sr                 20              -
exg                        6               -
ext                        4               -
link                       16              -
move to ccr                12              12&
move to sr                 12              12&
move from sr               6               8&
move usp                   4               -
nop                        4               -
ori to ccr                 20              -
ori to sr                  20              -
reset                      132             -
rte                        20              -
rtr                        20              -
rts                        16              -
stop                       4               -
swap                       4               -
trapv (without trap)       4               -
unlk                       12              -

& = add the time for calculating the effective address


                           68000

address error              50
bus error                  50
chk instruction            44+*
illegal instruction        34
interruption               44#
privilege violation        34
trace                      34
trap                       38
trapvs                     34


+ add the time for calculating the effective address
* maximum duration
# 4 clock cycles included for the interruption cycle