Software Assurance Reference Dataset

Walter Bright via Digitalmars-d digitalmars-d at puremagic.com
Sun Jul 13 16:35:45 PDT 2014


On 7/13/2014 4:04 AM, "Marc Schütz" <schuetzm at gmx.net>" wrote:
> On Sunday, 13 July 2014 at 03:25:08 UTC, Walter Bright wrote:
>> On 7/11/2014 10:28 AM, deadalnix wrote:
>>> The compiler can ensure that you hit at least every 4k or so.
>>
>> And it already does.
>
> Doesn't look so:
>

>      int bar(int a) {
>          int[8000] b = void;
>          b[$-1] = a;
>          return b[$-1];
>      }

On Win32:

_D4foo53barFiZi comdat
         assume  CS:_D4foo53barFiZi
                 push    EBP
                 mov     EBP,ESP
                 mov     EDX,7
L8:             sub     ESP,01000h
                 test    [ESP],ESP
                 dec     EDX
                 jne     L8
                 sub     ESP,0D04h
                 lea     ECX,-8[EBP]
                 mov     [ECX],EAX
                 mov     EAX,-8[EBP]
                 leave
                 ret

It doesn't do it on Linux because gcc doesn't do it. But the capability is in 
the back end, and it does it for alloca(), too.


More information about the Digitalmars-d mailing list