[blog] Introduction to Dynamic Recompilation
#41
XD, I told Psyman that(The day of BD's release) and he outright refused to believe me xD

It explains why Aida64's Julia and Mendel tests are so low, they are optimised for 256bit AVX on AVX enabled processors.

This unfortunately puts amd's AVX performance in these tests well behind Nahalem SSE

Also

OMG! Gabest is back.
Reply

Sponsored links

#42
on the subject of Intermediate Languages, does .NET IL classify as a viable alternative for coding a decent dynamic recompiler? I had to code a compiler for a simple language as a semester project, and had to use IL emitters all the time...
Reply
#43
(10-28-2011, 08:38 PM)peke Wrote: on the subject of Intermediate Languages, does .NET IL classify as a viable alternative for coding a decent dynamic recompiler? I had to code a compiler for a simple language as a semester project, and had to use IL emitters all the time...

Providing this copied right on my phone, there was an interesting discussion on ngemu about this and someone using .net chimed in
http://forums.ngemu.com/showthread.php?t=137562&highlight=optimized

It starts off about function tables but moves on to recompilers, its very interesting.
[Image: ref-sig-anim.gif]

Reply
#44
(10-28-2011, 08:38 PM)peke Wrote: on the subject of Intermediate Languages, does .NET IL classify as a viable alternative for coding a decent dynamic recompiler? I had to code a compiler for a simple language as a semester project, and had to use IL emitters all the time...

Using .NET IL (aka MSIL/CIL) to create a dyanarec will provide a good speedup compared to a .NET interpreter or even a native code interpreter. However the fastest approach is generally a Native Dynarec.

The big advantage with a CIL dynarec however is that its portable, whereas a native dynarec isn't. So an emu that was designed with one can easily support any platform with a .NET JIT-compiler.

There is also another big disadvantage with a CIL dynarec, which is vector optimizations. With something like the ps2 which has the Vector Units, we require optimized SSE code with the VU dynarecs to get decent speeds. My assumption is a CIL dynarec will produce way slower code; but I'm not familiar with the CIL instructions, so I could be wrong.
Check out my blog: Trashcan of Code
Reply
#45
Very good article! I have a question:

How does recompiled code connect to vltb? I mean, when application did a STORE operation to DMA chcr register, is the implementation like ... update the chcr data first, then JMP to dmaWrite32 func? I think the related code is as following:
Code:
void vtlb_DynGenWrite(u32 sz)
{
    uptr* writeback = DynGen_PrepRegs();

    DynGen_IndirectDispatch( 1, sz );
    DynGen_DirectWrite( sz );

    *writeback = (uptr)xGetPtr();
}
DynGen_DirectWrite looks like doing the write operation, and the does DynGen_IndirectDispatch( 1, sz ) do the jump ? (PS: code about recompiler is kinda tough to me now, but Im interesting about that Smile )
Reply




Users browsing this thread: 2 Guest(s)