Shared Source Device Emulator from Microsoft
An anonymous reader writes "Microsoft has posted a shared source version of its device emulator (which ships with Visual Studio 2005) for download.
Primarily meant for academia to experiment with and build upon, it is licensed under the Microsoft Shared Source Academic License. Since it emulates the ARM processor, it can run all modern Windows Mobile and Windows CE operating systems. Barry Bond, the architect behind the emulator (and also Rotor, one of Microsoft's previous shared source offerings) has a blog post on the release."
... this is a really popular offering by Microsoft.
With this announcement and the recent release of VirtualPC for free download...
/me eagerly awaits free download of Windows Vista... ;-)
Are we seeing some kind of paradigm shift from Microsoft here? Or is it merely an attempt to increase recently waning market share?
Either way, this seems like it can only be good for consumers.
On the blog, he also talks about the steps he took from the v1 code to the v2 code, and some of the optimisations he used.
The information he provided is fairly indepth and can really be applied to many a cpu emulator.
Quite an informative read.
What all can you or I run on this? Will linux for some ordinarily CE device work?
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
Rotor is the shared-source implementation of .NET. You could think of it as an alternative to Mono -- it's even been ported to Linux. But there must be some reason for Mono still existing -- I'm guessing the shared-source has a bitch of a license.
Don't thank God, thank a doctor!
According to the license, only people who are in the category: "while attending or employed by an accredited educational institution". So only students, their teachers and researchers (and accredited means not your average school). That means almost nobody, sigh,...
If you write applications for Windows Mobile OS's then this interesting. Otherwise... **yawn**... There's a restrictive license and is bundled with Windows Mobile OS Images only, so there's not much use for it other than as a plugin to Visual Studio. There are plenty of fully free-as-in-speech ARM to x86 JITs and ARM emulators out there with more features and less restrictive licenses. In fact, I would bet ARM is the most emulated device out there. Do a search for "ARM Emulator" see for yourself.
In the first part (I didn't bother to read the rest) he explains how they improved the lookup time in the TLB by moving from a linear search... to a hash table. This is algorithm and datastructures 101. The fact that they are proud of this is frightening. If you want to learn optimization techniques, please, do yourself a favor and read something else.
The sooner you fall behind, the more time you have to catch up.
"(B)Platform Limitation- The licenses granted in sections 2(A) & 2(B) extend only to the software or derivative works that you create that run on a Microsoft Windows operating system product.Further, you may only use the software to emulate running Windows operating system products."
"(E) If you distribute the software or derivative works in source code form you may do so only under this license (i.e., you must include a complete copy of this license with your distribution), and if you distribute the software or derivative works in compiled or object code form you may only do so under a license that complies with this license."
Please do yourself a favor and read the whole thing before you pass judgement. It is not all datastructures 101, although he admits at the end of the post that they are all relatively simple optimizations.
The point is not the use of hashtable but which code paths were sufficiently hot, so that a small change to them caused a high payoff. The main problem in performance optimizations of a non-trivial program is finding which code paths have potential to offer high payoffs, the actual implementation is frequently trivial algorithmic or implementation changes.
But do they also emulate the I/O of a Windows Mobile device, to the point where a PDA owner could backup his handheld and restore it to the emulator?
I can think of at least one alternative use; the ability to test your web site underneath Pocket IE and Opera for Windows Mobile without having to pay for such a device.