EASy68K
http://www.easy68k.com/EASy68Kforum/

Random 68k questions
http://www.easy68k.com/EASy68Kforum/viewtopic.php?f=6&t=1157
Page 1 of 1

Author:  richardcavell [ Wed Jan 02, 2013 8:41 am ]
Post subject:  Random 68k questions

Guys, I'm trying to understand some nuances of 68k development. Sorry if the questions are a little esoteric.

1. Do the DFC and SFC registers of the 68010 have any use other than in the context of MOVES, which spoofs a type of address access?

2. Does anyone use the LINK and UNLK instructions?

3. The Easy68k "operating system" implements operating system calls by using TRAP. Yet exceptions take a significant amount of time and stack space and habitually place the CPU in supervisor mode. The Amiga used to implement system calls by using a jump table, where the address of at least the first jump table was at a known memory location (in the vector table, actually). Does anyone wish to comment on whether implementing operating system calls via TRAP is inefficient?

Richard

Author:  clive [ Wed Jan 02, 2013 4:45 pm ]
Post subject:  Re: Random 68k questions

LINK and UNLK are used prolifically by compilers, and more generally when you want to set up stack frames.
Code:
                     207   _printf:
000005B6  4E56 FFFC  208          link      A6,#-4
000005BA  48E7 2000  209          movem.l   D2,-(A7)
000005BE  41EE 0008  210          lea       8(A6),A0
000005C2  5848       211          addq.w    #4,A0
000005C4  2408       212          move.l    A0,D2
000005C6  2F02       213          move.l    D2,-(A7)
000005C8  2F2E 0008  214          move.l    8(A6),-(A7)
000005CC  42A7       215          clr.l     -(A7)
000005CE  6100 00CA  216          bsr       _vsprintf
000005D2  DEFC 000C  217          add.w     #12,A7
000005D6  2D40 FFFC  218          move.l    D0,-4(A6)
000005DA  4282       219          clr.l     D2
000005DC  202E FFFC  220          move.l    -4(A6),D0
000005E0  4CDF 0004  221          movem.l   (A7)+,D2
000005E4  4E5E       222          unlk      A6
000005E6  4E75       223          rts


Yes TRAPs can be somewhat expensive, but offer memory protection, and task switching opportunities. Accessing IO device tends to be a rather slow and expensive process too. One has to balance what needs to be done in user vs system space, trivial stuff should be done in user space code, if you need to copy memory between tasks a TRAP might be the only safe way of doing it. For a simple memcpy or multiply linking to a static or dynamic library, or inlining, might be the way to go.

Page 1 of 1 All times are UTC
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/