delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2000/11/06/16:00:20

From: groman AT f2s DOT com
Newsgroups: comp.os.msdos.djgpp
Subject: Runtime entry point change... Possible?
Date: Mon, 06 Nov 2000 20:27:31 GMT
Organization: Deja.com - Before you buy.
Lines: 45
Message-ID: <8u747a$rug$1@nnrp1.deja.com>
NNTP-Posting-Host: 199.80.207.2
X-Article-Creation-Date: Mon Nov 06 20:27:31 2000 GMT
X-Http-User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
X-Http-Proxy: 1.1 x71.deja.com:80 (Squid/1.1.22) for client 199.80.207.2
X-MyDeja-Info: XMYDJUIDgroman
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Hello, I am using DJGPP to write a small exokernel
for i386(a hobby OS if you say). Well it's been
monolithic up to now, but now I want to make it exo(or micro).
I split it up in modules and managed to get GNU GRUB
to load them. I want to simplify intermodule communication
and execution, so I am wondering if there is a way
to declare procedure so that I can change it's physical
address entry point later at runtime. Is that possible.

e.g. two ELF binaries loaded in the same address space.

ELF1:

void FunctionPrint(void)
{
  DummyCode; // Never get's executed.
}

void main(void)
{
   // Begin pseudocode
   Assign(FunctionPrint, GetELF2FuncPrintEntry());

   FunctionPrint(); // Executes the function print from ELF2
   // End pseudocode
   // Is this possible with DJGPP? Assuming I have GetELF2FuncPrintEntry
}

ELF2:

void FunctionPrint(void)
{
    Print; // Get's executed from ELF1
}
/////

Is this possible? Or do I have to use inline assembly functions?(I
don't mind, just, it would make me look bad if it's possible with
DJGPP).

Thank you very much in advance.


Sent via Deja.com http://www.deja.com/
Before you buy.

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019