I've written a tutorial about SoftWire's newest features. Check it out here.

Comments and criticism are very welcome. If any part of the tutorial is unclear then please let me know!
Posted on 2003-07-20 18:48:02 by C0D1F1ED
Did anyone attempt to build a compiler with SoftWire? Are there any important missing features? Or are there simply much better compiler back-end libraries? Thanks for any feedback...
Posted on 2003-08-04 14:07:16 by C0D1F1ED
C0D1F1ED: Softwire is a very nice package, but i didnt find any use for me right now
(but I fished some nice ideeas :) ).

as i saw that you have experience with graphics I think that a graphic example
that can switch between normal and softwire accelerated routines would be nice :)

anyway keep up the good work and dont be let down by the lack of feedback.
Posted on 2003-08-05 00:55:33 by TBD
hey nicolas. i haven't yet touched it, but do intend to sometime. cozz i wanna learn compiler stuff too.. hehe. keep it up
Posted on 2003-12-16 15:12:24 by evil__donkey
:alright: a very nice work. Thx, to share it :grin: . Btw, I've just read a little bit in your site, and this thing comes into my mind: is it still possible for a self modifying code like the one that comes out from your "engine" to be executed once microsoft implement the nx bit on their next OS. I hope I can help in your project when I'm ready, I've just started to learn compilers lately :(
Posted on 2004-03-25 11:36:49 by Pinczakko
The only thing it takes to work on NX protected systems is VirtualAlloc with PAGE_EXECUTE. Stay away from heap or stack memory.
Posted on 2004-03-25 12:04:10 by f0dder
just a small remark in some text at the tutorial,


Most debuggers like Visual C++ will not show the value of the registers...


type this in the watch window: @EAX :)
no need seperate register window.
Posted on 2004-03-25 18:51:34 by wizzra
Originally posted by wizzra
type this in the watch window: @EAX :)
no need seperate register window.

Thanks for the tip!

Anyway, I practically never use the watch window. :grin:
Posted on 2004-03-26 08:16:28 by C0D1F1ED
Nick,

I've been a fan ever since it was originally posted at flipcode.com. It's come a long way. Anyway, I added you to my list of "Cool Stuff" on my web site www.visualassembler.com


Thanks,
_shawn
Posted on 2004-03-26 23:40:36 by _Shawn
The only thing it takes to work on NX protected systems is VirtualAlloc with PAGE_EXECUTE. Stay away from heap or stack memory.


I use HeapAlloc a lot in my code, is that what you mean by Heap functions?
Posted on 2004-09-13 18:40:21 by x86asm
x86asm, yes - although it only applies if you're writing+executing code to the memory. For all normal memory allocation, the Heap functions are just fine. But when doing JIT code etc, you should use VirtualAlloc and specify the correct flags.
Posted on 2004-09-14 05:54:02 by f0dder
Nicolas,

I created a 65c02/65816 CPU core (originally in C#) and then went and created a version in managed-C++. I was experimenting with JIT emulation so I used your Softwire project (4.1.1?) and JIT'd the firmware and some of the executing program (so long as it wasn't self-modifying code otherwise the cache would get invalided too often and then eventually the JIT'er would "learn" not to attempt to optimize certain regions of code).

Anyway, I stopped working on the project and went and optimized the C# and got 8x the speed by doing so. What I aim to do is use Softwire as a backend for the ARM7 CPU core.

Softwire is a good utility. I'll need to work out for myself an optimizer, because writing boiler-plate code can be slower then emulated instructions at times.

Lately I've been too busy studying Chinese and working on my other proejct (http://www.zenofdotnet.com) but I'll revisit this again.


Thanks,
_Shawn
Posted on 2004-09-14 10:59:11 by _Shawn
Thanks for your introducing this useful tool for me.

Good job.
Posted on 2005-01-14 15:47:24 by gentlelover