CosmosOS / IL2CPU

IL2CPU is a compiler for .NET IL code to compile to assembly language for direct booting.
BSD 3-Clause "New" or "Revised" License
279 stars 71 forks source link

x64 instructions #14

Open jp2masa opened 6 years ago

jp2masa commented 6 years ago

From @Hetal728 on January 2, 2015 20:52

x64 instructions would be a great enhancement, I could give it a shot if I figure out where/what I have to do.

Copied from original issue: CosmosOS/Cosmos#44

jp2masa commented 6 years ago

From @mterwoord on January 3, 2015 8:31

At this point in the project, we don't want x64 support added. We only have limited resources (devs), and we want to focus on 1 platform (x86) for now. Doesn't mean it's definitely planned though.

Maybe you're interested in helping us out?

jp2masa commented 6 years ago

From @Hetal728 on January 3, 2015 16:44

I'm relatively new to OS programming, but not to .NET/C#, I could probably help out.

jp2masa commented 6 years ago

From @mterwoord on January 3, 2015 16:54

See our issues tab, there's some tasks there. For the rest, we're pretty much blocked on a few larger issues currently. If you're willing to dive in something bigger, feel free. #25 and #42 are up for taking, or otherwise #9....

jp2masa commented 6 years ago

From @SapphireGitHub on May 15, 2017 23:18

Update: I think it supports x64 now.

jp2masa commented 6 years ago

We don't have x64 support, but x86 can run on x86_64 computers.

fanoI commented 6 years ago

Partially linked to this is x32 instruction set an interesting mix between x86 and x64 practically is x64 with 32 bit sized pointers that it is good for memory usage - in particular for .NET - in which all is a pointer / reference:

https://en.wikipedia.org/wiki/X32_ABI

IMHO this should be the "default" mode.

Arawn-Davies commented 6 years ago

@fanoI would x32 ABI require jumping into long mode?

fanoI commented 6 years ago

Yes it is long mode the really difference is that pointers are 32 bit not 64 this means less memory is used. The advantages are that you operate with long values directly as you can use 64 bit registers, you are sure that all SSE / SSE2 instructions are present and so on.