<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>
	Comments on: Microsoft eMbedded Visual C++ 4.0	</title>
	<atom:link href="https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/feed/" rel="self" type="application/rss+xml" />
	<link>https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/</link>
	<description>Fun with Virtualization</description>
	<lastBuildDate>Fri, 26 May 2023 15:16:48 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>
	<item>
		<title>
		By: Malcolm		</title>
		<link>https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-328145</link>

		<dc:creator><![CDATA[Malcolm]]></dc:creator>
		<pubDate>Sun, 16 Apr 2023 17:14:41 +0000</pubDate>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=151#comment-328145</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-327774&quot;&gt;neozeed&lt;/a&gt;.

On to PowerPC!  (Seriously, Tenox has been asking - is this why you&#039;re looking too?)

I took a Visual C++ 5 cross compiler, which is confusingly bundled in the &quot;Windows CE toolkit for Visual C++ 6&quot; under the WCE200 directory, and tried it with a Visual C++ 4.2 linker.  So far no luck - it complains about unresolved externals with &quot;__savegpr__nn&quot; and other assembly routines from msvcrt.lib.  Since msvcrt.lib came from the RISC Visual C++ 4.0 and I&#039;m using a 4.2 linker, I doubt the linker is really the problem though.  Just for kicks I tried the same exercise as here, and using the Visual C++ 5.0 CE linker reports &quot;invalid fixup found, type 0x0808&quot; in kernel32.lib.

I think fixing it implies getting new Visual C++ 5.0 compatible assembler stubs, or shims to the existing ones.  These routines are provided as objects only (not real asm source) in the RISC Visual C++ 4.0.  So although I haven&#039;t succeeded yet, it feels tantalizingly close.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-327774">neozeed</a>.</p>
<p>On to PowerPC!  (Seriously, Tenox has been asking &#8211; is this why you&#8217;re looking too?)</p>
<p>I took a Visual C++ 5 cross compiler, which is confusingly bundled in the &#8220;Windows CE toolkit for Visual C++ 6&#8221; under the WCE200 directory, and tried it with a Visual C++ 4.2 linker.  So far no luck &#8211; it complains about unresolved externals with &#8220;__savegpr__nn&#8221; and other assembly routines from msvcrt.lib.  Since msvcrt.lib came from the RISC Visual C++ 4.0 and I&#8217;m using a 4.2 linker, I doubt the linker is really the problem though.  Just for kicks I tried the same exercise as here, and using the Visual C++ 5.0 CE linker reports &#8220;invalid fixup found, type 0x0808&#8221; in kernel32.lib.</p>
<p>I think fixing it implies getting new Visual C++ 5.0 compatible assembler stubs, or shims to the existing ones.  These routines are provided as objects only (not real asm source) in the RISC Visual C++ 4.0.  So although I haven&#8217;t succeeded yet, it feels tantalizingly close.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: neozeed		</title>
		<link>https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-327774</link>

		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Fri, 14 Apr 2023 13:15:39 +0000</pubDate>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=151#comment-327774</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239224&quot;&gt;Malcolm&lt;/a&gt;.

Not sure why it took so long, but I finally made the modifications after going through a few releases to find that exact same linker.  It worked. cross built hyperoids in a second.  It&#039;s everything a cross compiler should have been!]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239224">Malcolm</a>.</p>
<p>Not sure why it took so long, but I finally made the modifications after going through a few releases to find that exact same linker.  It worked. cross built hyperoids in a second.  It&#8217;s everything a cross compiler should have been!</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Malcolm		</title>
		<link>https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239224</link>

		<dc:creator><![CDATA[Malcolm]]></dc:creator>
		<pubDate>Wed, 08 Jan 2020 20:28:23 +0000</pubDate>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=151#comment-239224</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239107&quot;&gt;Malcolm&lt;/a&gt;.

One more:

P:\dev\bin\mips\linkhack&#062;cvtres /?
Microsoft (R) Windows Resource To Object Converter Version 5.00.1720.1
Copyright (C) Microsoft Corp. 1992-1997. All rights reserved.

P:\dev\bin\mips\linkhack&#062;sha256sum CVTRES.EXE
5e8377423582f57a94432209405fc3a96615e1799cbfab62787bed6ff40f8fe5 CVTRES.EXE

P:\dev\bin\mips\linkhack&#062;fc /b cvtres.exe cvtres2.exe
Comparing files CVTRES.EXE and CVTRES2.EXE
00000EAE: 74 EB]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239107">Malcolm</a>.</p>
<p>One more:</p>
<p>P:\dev\bin\mips\linkhack&gt;cvtres /?<br />
Microsoft (R) Windows Resource To Object Converter Version 5.00.1720.1<br />
Copyright (C) Microsoft Corp. 1992-1997. All rights reserved.</p>
<p>P:\dev\bin\mips\linkhack&gt;sha256sum CVTRES.EXE<br />
5e8377423582f57a94432209405fc3a96615e1799cbfab62787bed6ff40f8fe5 CVTRES.EXE</p>
<p>P:\dev\bin\mips\linkhack&gt;fc /b cvtres.exe cvtres2.exe<br />
Comparing files CVTRES.EXE and CVTRES2.EXE<br />
00000EAE: 74 EB</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: w.		</title>
		<link>https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239193</link>

		<dc:creator><![CDATA[w.]]></dc:creator>
		<pubDate>Wed, 08 Jan 2020 14:43:08 +0000</pubDate>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=151#comment-239193</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239192&quot;&gt;neozeed&lt;/a&gt;.

BTW. Linux KVM also supports virtualization on MIPS, both hardware assisted and software by fault managing. SW one needs you to relocate your virtualized kernel, guess that&#039;s not doable with NT as guest.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239192">neozeed</a>.</p>
<p>BTW. Linux KVM also supports virtualization on MIPS, both hardware assisted and software by fault managing. SW one needs you to relocate your virtualized kernel, guess that&#8217;s not doable with NT as guest.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: neozeed		</title>
		<link>https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239192</link>

		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Wed, 08 Jan 2020 14:27:00 +0000</pubDate>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=151#comment-239192</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239191&quot;&gt;w.&lt;/a&gt;.

I&#039;m torn. If I had the means I&#039;d probably want a modern AT, with some current gen processor, and ISA bus.

But a MIPS box even with ISA would be awesome too. 

How hard is it to write a HAL?]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239191">w.</a>.</p>
<p>I&#8217;m torn. If I had the means I&#8217;d probably want a modern AT, with some current gen processor, and ISA bus.</p>
<p>But a MIPS box even with ISA would be awesome too. </p>
<p>How hard is it to write a HAL?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: w.		</title>
		<link>https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239191</link>

		<dc:creator><![CDATA[w.]]></dc:creator>
		<pubDate>Wed, 08 Jan 2020 14:17:52 +0000</pubDate>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=151#comment-239191</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239180&quot;&gt;neozeed&lt;/a&gt;.

Now try to run the x86 embedded VC MIPS cross compiler on that MIPS machine using wx86 ;-)
Why are you showing me those MIPS NT stuff again - it distracts me - because i want it on a real processor very bad :&#060;]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239180">neozeed</a>.</p>
<p>Now try to run the x86 embedded VC MIPS cross compiler on that MIPS machine using wx86 😉<br />
Why are you showing me those MIPS NT stuff again &#8211; it distracts me &#8211; because i want it on a real processor very bad :&lt;</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: neozeed		</title>
		<link>https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239180</link>

		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Wed, 08 Jan 2020 11:57:01 +0000</pubDate>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=151#comment-239180</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239155&quot;&gt;Malcolm&lt;/a&gt;.

I&#039;m re-installing NT 4.0 MIPS now, although I forgot how badly the mouse emulation can jump around like crazy... it&#039;s very annoying.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239155">Malcolm</a>.</p>
<p>I&#8217;m re-installing NT 4.0 MIPS now, although I forgot how badly the mouse emulation can jump around like crazy&#8230; it&#8217;s very annoying.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Malcolm		</title>
		<link>https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239155</link>

		<dc:creator><![CDATA[Malcolm]]></dc:creator>
		<pubDate>Wed, 08 Jan 2020 08:00:06 +0000</pubDate>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=151#comment-239155</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239123&quot;&gt;neozeed&lt;/a&gt;.

From poking around it looks like the &quot;real&quot; Visual C++ 4 compiler just assumes the presence of floating point hardware, whereas the eVC compiler is capable of emulating floating point and defaults to emulation, which adds library calls to coredll.dll or something that won&#039;t exist on NT MIPS.  The eVC compiler uses /QMFPE to enable floating point emulation and /QMFPE- to use floating point hardware.  After telling it to use floating point hardware, I can generate a simple floating-point hello world that seems to work fine.  I don&#039;t know if that&#039;s the same thing you were seeing, but floating point on NT MIPS does work with this compiler, at least in the basic case.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239123">neozeed</a>.</p>
<p>From poking around it looks like the &#8220;real&#8221; Visual C++ 4 compiler just assumes the presence of floating point hardware, whereas the eVC compiler is capable of emulating floating point and defaults to emulation, which adds library calls to coredll.dll or something that won&#8217;t exist on NT MIPS.  The eVC compiler uses /QMFPE to enable floating point emulation and /QMFPE- to use floating point hardware.  After telling it to use floating point hardware, I can generate a simple floating-point hello world that seems to work fine.  I don&#8217;t know if that&#8217;s the same thing you were seeing, but floating point on NT MIPS does work with this compiler, at least in the basic case.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: neozeed		</title>
		<link>https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239123</link>

		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Wed, 08 Jan 2020 01:15:04 +0000</pubDate>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=151#comment-239123</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239107&quot;&gt;Malcolm&lt;/a&gt;.

Wow that&#039;s pretty great!  Although now I not only need to try it, but I wonder if any of this works with floating point code at all.

And of course the lack of native hardware is always a drag, MIPS machines seem to be the rarest to find.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239107">Malcolm</a>.</p>
<p>Wow that&#8217;s pretty great!  Although now I not only need to try it, but I wonder if any of this works with floating point code at all.</p>
<p>And of course the lack of native hardware is always a drag, MIPS machines seem to be the rarest to find.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Malcolm		</title>
		<link>https://virtuallyfun.com/2009/08/09/microsoft-embedded-visual-c-4-0/comment-page-1/#comment-239107</link>

		<dc:creator><![CDATA[Malcolm]]></dc:creator>
		<pubDate>Tue, 07 Jan 2020 20:03:59 +0000</pubDate>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=151#comment-239107</guid>

					<description><![CDATA[Last night I made a prediction that the eVC linker might still have NT MIPS code in there, and that prediction was right.  After making this change I have /GF and /Gy again, and my binaries are half their previous size.  I think only the first two bytes of the change are really needed, the rest are nops to realign to the next legitimate instruction for cleanliness.

C:\&#062;link /?
Microsoft (R) Incremental Linker Version 6.24.1243
Copyright (C) Microsoft Corporation.  All rights reserved.

C:\&#062;sha256sum `which link.old`
b2f5263e7022823e4f5742772552e4a973d4d73170457965474c069b8db75dce link.old

C:\&#062;fc /b `which link.old` `which link`
Comparing files P:\DEV\BIN\MIPS\LINKHACK\link.old and P:\DEV\BIN\MIPS\LINKHACK\LINK.EXE
0005CD66: 66 EB
0005CD67: 83 1A
0005CD68: B9 90
0005CD6A: 00 90
0005CD6B: 00 90
0005CD6C: 00 90
0005CD6D: 09 90
0005CD6E: 74 90
0005CD6F: 12 90]]></description>
			<content:encoded><![CDATA[<p>Last night I made a prediction that the eVC linker might still have NT MIPS code in there, and that prediction was right.  After making this change I have /GF and /Gy again, and my binaries are half their previous size.  I think only the first two bytes of the change are really needed, the rest are nops to realign to the next legitimate instruction for cleanliness.</p>
<p>C:\&gt;link /?<br />
Microsoft (R) Incremental Linker Version 6.24.1243<br />
Copyright (C) Microsoft Corporation.  All rights reserved.</p>
<p>C:\&gt;sha256sum `which link.old`<br />
b2f5263e7022823e4f5742772552e4a973d4d73170457965474c069b8db75dce link.old</p>
<p>C:\&gt;fc /b `which link.old` `which link`<br />
Comparing files P:\DEV\BIN\MIPS\LINKHACK\link.old and P:\DEV\BIN\MIPS\LINKHACK\LINK.EXE<br />
0005CD66: 66 EB<br />
0005CD67: 83 1A<br />
0005CD68: B9 90<br />
0005CD6A: 00 90<br />
0005CD6B: 00 90<br />
0005CD6C: 00 90<br />
0005CD6D: 09 90<br />
0005CD6E: 74 90<br />
0005CD6F: 12 90</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
