generate tuples from sequence
Duncan Booth
duncan.booth at invalid.invalid
Thu Jan 18 08:41:32 EST 2007
Peter Otten <__peter__ at web.de> wrote:
> Let's see if I understand the above: In C a call
>
> f(g(), g())
>
> may result in machine code equivalent to either
>
> x = g()
> y = g()
> f(x, y)
>
> or
>
> y = g()
> x = g()
> f(x, y)
>
> Is that it?
>
Yes, or changing one of the calls to h() and compiling with
"cl -Fat.asm -Ox -c t.c":
------ t.c --------
extern int f(int a, int b);
extern int g();
extern int h();
int main(int argc, char **argv) {
return f(g(), h());
}
-------------------
The output file:
------- t.asm -----
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.3077
TITLE t.c
.386P
include listing.inc
if @Version gt 510
.model FLAT
else
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT ENDS
_DATA SEGMENT DWORD USE32 PUBLIC 'DATA'
_DATA ENDS
CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST ENDS
_BSS SEGMENT DWORD USE32 PUBLIC 'BSS'
_BSS ENDS
$$SYMBOLS SEGMENT BYTE USE32 'DEBSYM'
$$SYMBOLS ENDS
_TLS SEGMENT DWORD USE32 PUBLIC 'TLS'
_TLS ENDS
FLAT GROUP _DATA, CONST, _BSS
ASSUME CS: FLAT, DS: FLAT, SS: FLAT
endif
INCLUDELIB LIBC
INCLUDELIB OLDNAMES
PUBLIC _main
EXTRN _f:NEAR
EXTRN _g:NEAR
EXTRN _h:NEAR
; Function compile flags: /Ogty
_TEXT SEGMENT
_argc$ = 8 ; size = 4
_argv$ = 12 ; size = 4
_main PROC NEAR
; File c:\temp\t.c
; Line 6
call _h
push eax
call _g
push eax
call _f
add esp, 8
; Line 7
ret 0
_main ENDP
_TEXT ENDS
END
-------------------------
More information about the Python-list
mailing list