CYCLES.TXT: Difference between revisions
Jump to navigation
Jump to search
Olivier.jan (talk | contribs) (Olivier.jan moved page CYCLES.TXT to CYCLES.TXT/fr: Renaming for language version) Tag: New redirect |
Olivier.jan (talk | contribs) mNo edit summary |
||
(5 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | + | {{Languages|CYCLES.TXT}} |
|
+ | <pre> |
||
+ | 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 |
||
+ | |||
+ | |||
+ | </pre> |
||
+ | Back to [[ASM_Tutorial]] |
||
+ | [[Category: 68000 ASSEMBLY ON ATARI ST Part 1 ]] |
Latest revision as of 00:02, 17 December 2023
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
Back to ASM_Tutorial