For your info:
Have a look at
http://msdn.microsoft.com/library/default.asp?URL=/library/techart/Interopdo
tNET.htm
for a detailed explanation.
Let me also recommend you
http://www.dnjonline.com/articles/essentials/iss21_essentials.html as a very
good introduction to .Net stuff.
And especially for Gianluca:
An article about efforts on porting .Net framework to Linux OS.
http://www.dnjonline.com/newsreel/DotNet_for_Linux.html
And here's an agreement between MS and Corel about that stuff:
http://www.sec.gov/Archives/edgar/data/890640/000089064000500007/techsupport
.htm
Sincerelly
Günther Feldzahn
>>Corel is about to sell their Linux division and go out of business soon.
Do not expect .NET on Linux or anywhere else anytime soon. There are several
tech articles, including interviews from the architects of .NET stating
clearly that .NET, at the moment, is too dependent on Windows to be ported
anywhere else.
Corel looks at selling Linux
http://yahoo.cnet.com/news/0-1003-200-3785993.html?pt.yfin.cat_fin.txt.ne
Some more info from the other side. :)
http://java.oreilly.com/news/farley_0800.html
This is funny
http://joel.editthispage.com/stories/storyReader$133
Ciao,
Gianluca
"Günther Feldzahn" <guenther...@agb70.ch> wrote in message
news:3QTz543W...@talkto.centurasoft.com...
Of course it would be stupid to rewrite the Centura system in another
programming language
"Gianluca ITG" <gian...@iceteagroup.com> schrieb im Newsbeitrag
news:Jbwkyr7W...@talkto.centurasoft.com...
This .NET is (will be) a big problem for a lot of development tools
producers. It will also pose a big dilemma, if you have to do a lot of work
to rewrite your compilers, why to do it toward Java at this point? Anyway,
IMO, it's definally something to take in serious consideration.
Ciao,
Gianluca
"Günther Feldzahn" <guenther...@agb70.ch> wrote in message
news:KuI4wVJX...@talkto.centurasoft.com...
As for generating IL stuff is complicated but not too complicated, it's
simply a lot of work. There is a whole set of classes "Emit namespace" that
generate IL code. Anyway, the easiest thing that can be done is to write a
COM bridge to .NET classes (similar to Jasper). This would allow CTD to
fully use 100% of .NET classes. This is relatively easy to do. There are is
enough reflection support in .NET extensions for C++ to do the same that I
have done with JNI in Jasper.
Is it really neccessary to redevelop that .NET to COM bridge. I thought such
a piece of software would be part of .NET called COM Interop mechanism which
works in both ways (COM clients could use .NET classes and COM classes could
be used by .NET clients).
See http://www.dnjonline.com/articles/essentials/iss21_essentials_fig2.html.
As far is I understand however that prevents object inheritance from these
predefined classes (simply because COM does not support inheritance) and
probably will make it impossible to use the Exception handling implemented
in .NET because the thrown objects would have to inherit from
System.Exception.
Gianluca, where did you find a (detailed) specification of MSIL? If found
some general stuff in MSDN but not a full specification of MSIL (the link to
"MSIL Instruction Set specification" is not yet put in place).
--
Martin Knopp, Dipl. Ing.
fecher GmbH / Österreich
Geschäftsführer / Managing Director
email: Martin...@fecher.at
phone: +43-1-3199124-0
fax: +43-1-3199124-80
"Gianluca ITG" <gian...@iceteagroup.com> schrieb im Newsbeitrag
news:sH$mIbLXA...@talkto.centurasoft.com...
I already have some code that does it. :)
I don't know about the beta available now, but the downloadable version that
was available a while ago has the full MSIL specification. The problem is
that MSIL is very similar to a high level assembly language (put stuff on
the stack, move, add from the top of the stack, etc.) and to write such a
compiler is a lot of work that can lead to many bugs. Just an example:
0x00 nop
0x01 break
0x02 ldarg.0
0x03 ldarg.1
0x04 ldarg.2
0x05 ldarg.3
0x06 ldloc.0
0x07 ldloc.1
0x08 ldloc.2
0x09 ldloc.3
0x0a stloc.0
0x0b stloc.1
0x0c stloc.2
0x0d stloc.3
0x0e ldarg.s
0x0f ldarga.s
0x10 starg.s
0x11 ldloc.s
0x12 ldloca.s
0x13 stloc.s
0x14 ldnull
0x15 ldc.i4.m1
0x16 ldc.i4.0
0x17 ldc.i4.1
0x18 ldc.i4.2
0x19 ldc.i4.3
0x1a ldc.i4.4
0x1b ldc.i4.5
0x1c ldc.i4.6
0x1d ldc.i4.7
0x1e ldc.i4.8
0x1f ldc.i4.s
0x20 ldc.i4
0x21 ldc.i8
0x22 ldc.r4
0x23 ldc.r8
0x25 dup
0x26 pop
0x27 jmp
0x28 call
0x29 calli
0x2a ret
0x2b br.s
0x2c brfalse.s
0x2d brtrue.s
0x2e beq.s
0x2f bge.s
0x30 bgt.s
0x31 ble.s
0x32 blt.s
0x33 bne.un.s
0x34 bge.un.s
0x35 bgt.un.s
0x36 ble.un.s
0x37 blt.un.s
0x38 br
0x39 brfalse
0x3a brtrue
0x3b beq
0x3c bge
0x3d bgt
0x3e ble
0x3f blt
0x40 bne.un
0x41 bge.un
0x42 bgt.un
0x43 ble.un
0x44 blt.un
0x45 switch
0x46 ldind.i1
0x47 ldind.u1
0x48 ldind.i2
0x49 ldind.u2
0x4a ldind.i4
0x4c ldind.i8
0x4d ldind.i
0x4e ldind.r4
0x4f ldind.r8
0x50 ldind.ref
0x51 stind.ref
0x52 stind.i1
0x53 stind.i2
0x54 stind.i4
0x55 stind.i8
0x56 stind.r4
0x57 stind.r8
0x58 add
0x59 sub
0x5a mul
0x5b div
0x5c div.un
0x5d rem
0x5e rem.un
0x5f and
0x60 or
0x61 xor
0x62 shl
0x63 shr
0x64 shr.un
0x65 neg
0x66 not
0x67 conv.i1
0x68 conv.i2
0x69 conv.i4
0x6a conv.i8
0x6b conv.r4
0x6c conv.r8
0x6d conv.u4
0x6e conv.u8
0x6f callvirt
0x70 cpobj
0x71 ldobj
0x72 ldstr
0x73 newobj
0x74 castclass
0x75 isinst
0x76 conv.r.un
0x77 ann.data.s
0x78 box
0x79 unbox
0x7a throw
0x7b ldfld
0x7c ldflda
0x7d stfld
0x7e ldsfld
0x7f ldsflda
0x80 stsfld
0x81 stobj
0x82 conv.ovf.i1.un
0x83 conv.ovf.i2.un
0x84 conv.ovf.i4.un
0x85 conv.ovf.i8.un
0x86 conv.ovf.u1.un
0x87 conv.ovf.u2.un
0x88 conv.ovf.u4.un
0x89 conv.ovf.u8.un
0x8a conv.ovf.i.un
0x8b conv.ovf.u.un
0x8d newarr
0x8e ldlen
0x8f ldelema
0x90 ldelem.i1
0x91 ldelem.u1
0x92 ldelem.i2
0x93 ldelem.u2
0x94 ldelem.i4
0x96 ldelem.i8
0x97 ldelem.i
0x98 ldelem.r4
0x99 ldelem.r8
0x9a ldelem.ref
0x9b stelem.i
0x9c stelem.i1
0x9d stelem.i2
0x9e stelem.i4
0x9f stelem.i8
0xa0 stelem.r4
0xa1 stelem.r8
0xa2 stelem.ref
0xb3 conv.ovf.i1
0xb4 conv.ovf.u1
0xb5 conv.ovf.i2
0xb6 conv.ovf.u2
0xb7 conv.ovf.i4
0xb8 conv.ovf.u4
0xb9 conv.ovf.i8
0xba conv.ovf.u8
0xc2 refanyval
0xc3 ckfinite
0xc6 mkrefany
0xc7 ann.call
0xc8 ann.catch
0xc9 ann.dead
0xca ann.hoisted
0xcb ann.hoisted_call
0xcc ann.lab
0xcd ann.def
0xce ann.ref.s
0xcf ann.phi
0xd0 ldtoken
0xd1 conv.u2
0xd2 conv.u1
0xd3 conv.i
0xd4 conv.ovf.i
0xd5 conv.ovf.u
0xd6 add.ovf
0xd7 add.ovf.un
0xd8 mul.ovf
0xd9 mul.ovf.un
0xda sub.ovf
0xdb sub.ovf.un
0xdc endfinally
0xdd leave
0xde leave.s
0xdf stind.i
0xe0 conv.u
0xfe 0x00 arglist
0xfe 0x01 ceq
0xfe 0x02 cgt
0xfe 0x03 cgt.un
0xfe 0x04 clt
0xfe 0x05 clt.un
0xfe 0x06 ldftn
0xfe 0x07 ldvirtftn
0xfe 0x08 jmpi
0xfe 0x09 ldarg
0xfe 0x0a ldarga
0xfe 0x0b starg
0xfe 0x0c ldloc
0xfe 0x0d ldloca
0xfe 0x0e stloc
0xfe 0x0f localloc
0xfe 0x11 endfilter
0xfe 0x12 unaligned.
0xfe 0x13 volatile.
0xfe 0x14 tail.
0xfe 0x15 initobj
0xfe 0x16 ann.live
0xfe 0x17 cpblk
0xfe 0x18 initblk
0xfe 0x19 ann.ref
0xfe 0x1a rethrow
0xfe 0x1c sizeof
0xfe 0x1d refanytype
0xfe 0x22 ann.data
0xfe 0x23 ann.arg
I have an idea on how to incorporate Java and .NET in CTD both ways without
having to use MSIL directly but taking advantage of existing compilers.
Ciao,
Gianluca
"Martin Knopp" <mkn...@EUnet.at> wrote in message
news:tcrhibQX...@talkto.centurasoft.com...