[M3devel] cg.alloca
Tony Hosking
hosking at cs.purdue.edu
Wed Jan 12 21:13:40 CET 2011
On Jan 12, 2011, at 3:09 PM, Jay K wrote:
>
> - Are you ok with the ugly/inefficient strcmp?
Where?
>
> - And what will be a more significant but still not huge transform in m3back?
> alloca will translate to chkstk -- an actual function call, but renamed
That's fine. I don't want to complicate m3middle for m3back, which is designed for speed not performance of the resulting code.
>
> The parameter that was already pushed on the stack will be be poped into eax,
> whereas with an m3cg operation, it would have been put into eax more directly.
>
> The return sequence will probably mov esp into..either eax specifically, or any register..I don't think leaving it in esp is easy enough for m3back to deal with. Again a special case in the general function call/return path.
>
>
> (In reality, the transform is quite significant in m3cc, but it is below where we work.)
Indeed.
>
>
> It's a funny thing in general, these "built in functions" that get very special handling and aren't necessarily "functions" (as in "call"/"ret"). Not clear in general to me how to model them.
>
>
> It makes one wonder why add/sub/multiply/div aren't builtin functions?
> i.e. "everything" could be viewed as a function.
>
>
> - Jay
>
>
> ----------------------------------------
>> From: hosking at cs.purdue.edu
>> Date: Wed, 12 Jan 2011 13:34:16 -0500
>> To: jay.krell at cornell.edu
>> CC: m3devel at elegosoft.com
>> Subject: Re: [M3devel] cg.alloca
>>
>> No, the atomics can't be because they don't map directly to a gcc builtin, whereas alloca *does*.
>>
>> On Jan 12, 2011, at 1:06 PM, Jay K wrote:
>>
>>>
>>> On NT386 the function is _chkstk, number of bytes in eax, return value in esp.
>>> Notice how in parse.c I had to strcmp for the function name. A little gross, but it does work.
>>> And C/C++ work that way.
>>> Notice how you implemented atomics.
>>>
>>> I half agree though. It could be a function call even for NT386.
>>> The atomics could be too.
>>>
>>> - Jay
>>>
>>> ----------------------------------------
>>>> From: hosking at cs.purdue.edu
>>>> Date: Wed, 12 Jan 2011 12:10:02 -0500
>>>> To: jay.krell at cornell.edu
>>>> CC: m3devel at elegosoft.com
>>>> Subject: Re: [M3devel] cg.alloca
>>>>
>>>> I don't see the reason for this. If alloca is imported and invoked the gcc backend will happily replace it with inline code.
>>>>
>>>>
>>>> Antony Hosking | Associate Professor | Computer Science | Purdue University
>>>> 305 N. University Street | West Lafayette | IN 47907 | USA
>>>> Office +1 765 494 6001 | Mobile +1 765 427 5484
>>>>
>>>>
>>>>
>>>>
>>>> On Jan 12, 2011, at 2:24 AM, Jay K wrote:
>>>>
>>>>>
>>>>> proposed diff attached
>>>>>
>>>>> - Jay
>>>>>
>>>>> ----------------------------------------
>>>>>> From: jay.krell at cornell.edu
>>>>>> To: m3devel at elegosoft.com
>>>>>> Date: Wed, 12 Jan 2011 06:28:26 +0000
>>>>>> Subject: [M3devel] cg.alloca
>>>>>>
>>>>>>
>>>>>> I'd like to make alloca a separate operation in m3cg.
>>>>>> Instead of a special function name that we check for.
>>>>>> More like the atomics.
>>>>>> I know how and can do it myself easily enough.
>>>>>> ok?
>>>>>>
>>>>>>
>>>>>> (and then I'll fix NT386)
>>>>>>
>>>>>>
>>>>>> - Jay
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
More information about the M3devel
mailing list