From: Greg A. <yak...@ma...> - 2002-04-16 22:51:00
|
You do realize that this is going to be HIDEOUSLY slow, don't you? I don't even want to think about the costs of just the fork() call, much less bringing up the assembler. This for every few basic blocks DEFINITELY isn't going to be worth it. From what I remember, most OSes don't use the execute page table bit, so the only things we have to do are: 1.) generate the code. 2.) invalidate the icache (globally or just that line, depending on architecture). This is your "magic function". 3.) branch to the code. Each of these should be pretty straightforward on any architecture, and so I wouldn't be too concerned about them. Anyone who is at all farmiliar with the target architecture should be able to write a back-end for each of these steps. GREG Bryce Denney wrote: > > Has anyone heard of a program producing C code or assembly code, compiling > it using an external compiler into a dynamic library, and then opening up > the dynamic lib and calling the new functions? Basically it's like > creating and loading a plugin on the fly. > > It seems like the alternative is to generate code, execute some kind of > magic function to make that page legal to execute, and then call the new > code via function pointer. Valgrind sources will tell us how to do this > for linux at least, but I don't know how to do it for any other platform. > > I expect the serious JIT (non-portable) compilers have their own custom > optimizer and code generator, but I don't think we should write one from > scratch. What if we made bochs link with binutils? > > -Bryce > > _______________________________________________ > bochs-developers mailing list > boc...@li... > https://lists.sourceforge.net/lists/listinfo/bochs-developers |