Boost logo

Boost :

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

Boost list run by bdawes at, gregod at, cpdaniel at, john at