[fpc-devel] FPC and Windows Phone 8

Sven Barth pascaldragon at googlemail.com
Tue Mar 11 07:50:39 CET 2014

On 11.03.2014 03:10, Vsevolod Alekseyev wrote:
> Let me reintroduce back each of the problematic lines and see what happens.
> Uncommenting DGROUP causes the following error message:
> error A2214: GROUP directive not allowed with /coff option
> I don't know what does DGROUP do, but Nikolay knows :) It's a DOS remnant,
> and makes no sense in Win32.
> Uncommenting ASSUME causes the following:
> error A2074: cannot access label through segment registers
> And it makes sense, too; who cares for segment registers on a flat model
> platform.
> .i386 works on VS2012, but on VS2005 (where I debugged initially) it'd give
> me the following error on every ALIGN 16 line:
> error A2189: invalid combination with segment alignment : 16

You could report these as bugs. I bet the MASM writer didn't get that 
much love in the past. ;)

> Anyways, as far as I can see, the biggest hurdle to implementing a Windows
> Phone target in FPC would be the ARM dialect. It's strictly Thumb-2 with
> hardware floating point and hard-float ABI. Some time ago, I've tried for a
> short while to make classic, 32-bit ARM code work on a device, and I
> couldn't. I've tried several assembly sequences that would branch and switch
> mode; they all would cause an exception. I'm not sure if non-support for ARM
> code is a feature in newer ARM cores; I'll ask around. FPC, as of now
> doesn't support Thumb-2 with hard FP.

I don't have a Windows Phone 8 device, so I can't test. But as FPC is in 
theory capable of generating Thumb code it should be "just" a matter of 
wiring the correct settings together inside the compiler for a winrt target.

> For the record, the native subsystem of Windows RT (AKA Windows 8 for ARM)
> and that of Windows Phone 8 are not identical - there's no binary
> compatibility.

They are API compatible (though WP8 is a subset of WRT). In how far they 
could really be treated as one target needs to be seen. At first I would 
nevertheless implement i386/x86_64-winrt, because that will lay the API 
ground work which all winrt/wp8 platforms will share and is far easier 
to debug than WP8.


More information about the fpc-devel mailing list