Hitchikers Guide to Porting Phobos / D Runtime to other architectures
Dwhatever
not at real.com
Tue Jan 7 13:52:53 PST 2014
> For LDC with an ARM backend, you only need to compile with
> -march= and/or -mcpu= if you wish to compile for bare-metal.
>
> The version strings are listed here
> (http://dlang.org/version.html). So if I understand your
> objective, you would only need...
>
> else version(ARM_Thumb) // or version(ARM) if targeting
> Cortex-A and the like
> {
> ...
> }
>
> And it may actually need to look more like...
> version(X86)
> {
> version(Windows)
> { }
> else version(Linux)
> { }
> else
> { }
> }
> else version(ARM_Thumb)
> {
> ...
> }
>
> of course the hard part is filling in the (...).
>
> What CPU/MCU are you targeting? Are you building for
> bare-metal?
Yes, for bare metal, no OS, nothing.
I think I have to specify my target architecture and CPU
otherwise the compiler cannot know that I'm cross compiling for
ARM. -march= -mcpu= will not work for me.
I'm trying to compile a simple stand alone object file.
class TestClass
{
ubyte member;
this(ubyte m) { member = m; }
ubyte Get() { return member; }
};
extern(C) void main()
{
// stack class
scope test = new TestClass(0);
// simple inline asm test
__asm("mov r0,#1;
mov r1,#2", "~{r0,r1}");
}
This test should be simple enough I thought but it turned out
that to compile and link this, D requires almost everything from
the runtime.
So the challenge is, compile and link the simple code above
targeting ARM using LDC, no OS allowed.
More information about the Digitalmars-d
mailing list