Le 20/06/2012 14:51, Manu a écrit :
On 20 June 2012 14:44, Don Clugston <d...@nospam.com
<mailto:d...@nospam.com>> wrote:

    On 20/06/12 13:04, Manu wrote:

        On 20 June 2012 13:51, Don Clugston <d...@nospam.com
        <mailto:d...@nospam.com>

        <mailto:d...@nospam.com <mailto:d...@nospam.com>>> wrote:

            On 19/06/12 20:19, Iain Buclaw wrote:

                Hi,

                Had round one of the code review process, so I'm going
        to post
                the main
                issues here that most affect D users / the platforms
        they want
                to run on
                / the compiler version they want to use.



                1) D Inline Asm and naked function support is raising
        far too
                many alarm
                bells. So would just be easier to remove it and avoid
        all the other
                comments on why we need middle-end and backend headers
        in gdc.


            You seem to be conflating a couple of unrelated issues here.
            One is the calling convention. The other is inline asm.

            Comments in the thread about "asm is mostly used for short
        things
            which get inlined" leave me completely baffled, as it is
        completely
            wrong.

            There are two uses for asm, and they are very different:
            (1) Functionality. This happens when there are gaps in the
        language,
            and you get an abstraction inversion. You can address these with
            intrinsics.
            (2) Speed. High-speed, all-asm functions. These _always_
        include a loop.


            You seem to be focusing on (1), but case (2) is completely
        different.

            Case (2) cannot be replaced with intrinsics. For example,
        you can't
            write asm code using MSVC intrinsics (because the compiler
        rewrites
            your code).
            Currently, D is the best way to write (2). It is much, much
        better
            than an external assembler.


        Case 1 has no alternative to inline asm. I've thrown out some crazy
        ideas to think about (but nobody seems to like them). I still
        think it
        could be addressed though.

        Case 2; I'm not convinced. These such long functions are the
        type I'm
        generally interested in aswell, and have the most experience
        with. But
        in my experience, they're almost always best written with
        intrinsics.
        If they're small enough to be inlined, then you can't afford not
        to use
        intrinsics. If they are truly big functions, then you begin to
        sacrifice
        readability and maintain-ability, and certainly limit the number of
        programmers that can maintain the code.


    I don't agree with that. In the situations I'm used to, using
    intrinsics would not make it easier to read, and would definitely
    not make it easier to maintain. I find it inconceivable that
    somebody could understand the processor well enough to maintain the
    code, and yet not understand asm.


These functions of yours are 100% asm, that's not really what I would
usually call 'inline asm'. That's really just 'asm' :)

You are being picky here.

Yes, this is 100% asm. But still, 100% asm is inline asm. It is asm within D code.

Reply via email to