LLL: asm version

Mike Prince mprince@crl.com
Wed, 2 Nov 1994 18:25:21 -0800 (PST)

On Thu, 3 Nov 1994, Francois-Rene Rideau wrote:

[talking about fat binaries...]

> I'll stick to this philosophy. Multiple versions are useful; we must support
> them. But again, they are only needed for small routines where performance is
> foremost and optimizers are not enough. Such routines are rare, but may be
> added anytime by users as the system evolves;

I don't have the answers yet.  But I have a gut feeling about kernel 
based tool boxes (tool boxes that appear when the kernel is activated).  
This is the only way our OS and code can be safe.  By only allowing "fat" 
binaries to be used by the kernel that spawned them.

In a distributed system it should not (I would argue cannot) be allowed 
to move binary level code around; you have no idea what it does.  The 
only safe thing to do is move our LLL and have the kernel control the the 
final compilation.

By saying the user may have to add it later makes me queasy.  On a 
persitent system it just doesn't seem right that someone can come along 
and make the kernel chew binary, just who is this person?  If the only 
binary to come along is at the start from the kernel itself, we are 
living in a much safer world.

Another reason to control this binary thing is the way in which I propose 
to relocate tool boxes with agents inside.  The final compiler puts sync 
instructions in the binary code, that causes the agents, during context 
switches to stop at points which can be matched on another machine with a 
different architecture.  The spacing of these sync instructions may vary 
between systems; very close in real-time systems, or far apart in overall 
speed critical systems.  Additionally, the frequency of sync points would 
be directly proportional to a buffer placed between the top of the stack 
down.  Only at sync points could execution stop when this buffer was 
violated.  Less sync points, the larger a buffer would have to be.

Don't get me wrong, the agents don't stop on sync points, they are just 
maskable interrupt instructions.  If there's no reason to stop, the agent 
keeps chugging away.

Why do we have to organize?  I'm having more fun just throwing ideas around!