Subject: Re: [boost] [context] Don't hard-code the assembler
From: Oliver Kowalke (oliver.kowalke_at_[hidden])
Date: 2014-04-02 02:13:41


2014-04-02 0:20 GMT+02:00 Steven Watanabe <watanabesj_at_[hidden]>:This is,
of course, why you shouldn't be

> writing assembler in the first place...
>

but C++ doesn't provide the required features (for instance swapping the
stack pointer) - I'm forced to use assembler.
some new compilers (MSVC for instance) do not support inline-assembler :^/

> I think I'd prefer it if Boost.Context
> just gave an error if I use a toolset that
> it doesn't support, instead of trying
> (and failing badly) to switch silently
> to a different toolset.
>

it does not switch to another toolset - boost.context contains assembler
code only and the convention is:

- on i386-Windows its uses MASM
- on x86_64-Windows its uses MASM64
- on arm-Windows armasm
- on all other platforms GNU as

> > On Windows MASM is used to compile boost.context - it was shipped with
> MS
> > Visual Studio an at some point MS decided
> > to move it from the MS Visual Studio to the MS WDK.
> >
>
> It's still installed along with Visual Studio.
>

masm64 too?

> - With <toolset>msvc, the assembler can't be
> found automatically, even though Boost.Build
> already knows how to find it.
>

hmm - it works for me - 'b2 toolset=msvc-10.0' builds boost.context on Win32

> - If the assembler has a name other then as,
> it cannot be used, even if it would actually
> work. This is especially likely to be a
> problem for cross compiling.
>

what would be a solution? If I would let the toolset choose the assembler
tool I would be forced
to support the different syntax of those assembler tools (which would be a
lot if you know how many
assemblers are available).

MASM and GNU as are the default assemblers an the related platforms