[OT] Previously: DMD - Windows -> C# in gamedev

Paulo Pinto pjmlp at progtools.org
Sat Jan 7 11:35:50 PST 2012


Am 07.01.2012 19:59, schrieb bearophile:
> Manu:
>
>> The tendency to encourage use of dynamic arrays will be a major problem.
>
> I don't know how much big that problem will be, D dynamic arrays are quite handy, but I agree that static arrays need to be encouraged more in D (and currently most algorithms of Phobos don't work with static arrays (you need to slice them first)).
>
> Currently even this code with a stack-allocated fixed size array causes a heap allocation (DMD):
>
> void main() {
>      int[2] a = [1, 2];
> }
>
> ASM, optimized build:
>
> __Dmain comdat
>      push EAX
>      push EAX
>      mov EAX,offset FLAT:_D12TypeInfo_xAi6__initZ
>      push EBX
>      push 8
>      push 2
>      push EAX
>      call near ptr __d_arrayliteralTX ; heap allocation
>      add ESP,8
>      mov EBX,EAX
>      mov dword ptr [EAX],1
>      mov ECX,EBX
>      push EBX
>      lea EDX,0Ch[ESP]
>      mov dword ptr 4[EBX],2
>      push EDX
>      call near ptr _memcpy
>      add ESP,0Ch
>      xor EAX,EAX
>      pop EBX
>      add ESP,8
>      ret
>
>
> I have suggested to add a safer version of VLAs to avoid some heap-allocated dynamic arrays:
> http://d.puremagic.com/issues/show_bug.cgi?id=5348
>
> Most people here seem to not care of the Ada language, but if you take a look at Ada code you see how often it doesn't use heap allocations.
>
> Bye,
> bearophile

The Ada standard also allows for some form of optional automatic memory 
management, even if only some of the compilers offer it.


http://en.wikibooks.org/wiki/Ada_Programming/Types/access




More information about the Digitalmars-d mailing list