Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #106202

Re: C Compilers QoI

From BartC <bc@freeuk.com>
Newsgroups comp.lang.c
Subject Re: C Compilers QoI
Date 2017-03-15 23:09 +0000
Organization A noiseless patient Spider
Message-ID <oachdi$87i$1@dont-email.me> (permalink)
References (4 earlier) <74bd9556-d8eb-4507-8780-11df9311b5d2@googlegroups.com> <ibWxA.69903$k61.43609@fx05.iad> <c117efc1-24a2-40cb-bc44-0c8833dff448@googlegroups.com> <oaa93r$obp$1@z-news.wcss.wroc.pl> <ed6e2220-879c-4c33-a3e4-fbefc9376fcb@googlegroups.com>

Show all headers | View raw


On 15/03/2017 18:56, supercat@casperkitty.com wrote:

> Going after low-hanging fruit is cheap and doesn't require much extra
> memory.  For example, instead of having a function to generate code to
> put an effective address into EBX, one could pass a pointer to a structure
> that describes the effective address as one of several forms, and have
> code that would perform operations on [EBX] accept that structure and
> generate code for the effective address indicated therein.  If one does
> likewise for code which would place value operands in EAX, then something
> like:
>
>    p->member += 3;
>
> would be improved from:
>
>    mov ebx,&p
>    mov ebx,[ebx]
>    add ebx,4 ; member offset
>    mov eax,3
>    add [dword ebx],eax

I don't understand what you mean about a function, above. But the code 
TCC32 generates for such a member access is:

     mov     eax,[p]
     add     eax,4
     mov     ecx,[eax]
     add     ecx,3
     mov     [eax],ecx

> to
>
>    mov ebx,[p]
>    add [dword ebx],3

The code I generate is more like this (but with a +4 offset you may have 
missed). But which one is faster on x86 is anyone's guess (maybe 
read-modify-write instructions are slower).

> I'd suggest that if someone writing such a code generator were worried about
> the quality of the machine code that would be generated from the resulting
> C code, the code generator would be better placed than a C compiler to handle
> many non-localized optimizations.  If a group of vectors precisely matches
> another, but shifted by some amount, it may be worthwhile for the utility that
> converts the vector-graphics file into C code to generate a function to draw
> that group of vectors with a given offset, and then replace each place where
> that sequence appears with a call to that function.  Such optimization,
> however, should really be the job of the code generator, rather than the job
> of the C compiler.

The size of an individual function shouldn't be an issue, unless it 
infringes on some hard limits of a compiler. It would be better QoI 
however if the limits were determined by hardware resources rather than 
some arbitrary number. (I have plenty of such limits in my own programs, 
but I'm not at the minute looking at creating a robust, professional 
product.)

But if there are no specific limits, there might be practical ones if 
some aspect has O(n-squared) behaviour for example, which is another QoI 
matter.

(I found exactly that in my own code yesterday, when testing those 
125,000 functions. Actually it couldn't even manage 5000 functions 
because of this (due to thousands of duplicate 'a', 'b', 'c' and 'd' 
variables). Fortunately that was easy to fix.

But I wouldn't have known about the problem if it wasn't for these 
'totally pointless' tests!)

-- 
Bartc

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

C Compilers QoI BartC <bc@freeuk.com> - 2017-03-14 13:01 +0000
  Re: C Compilers QoI mark.bluemel@gmail.com - 2017-03-14 06:16 -0700
  Re: C Compilers QoI already5chosen@yahoo.com - 2017-03-14 06:42 -0700
  Re: C Compilers QoI "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2017-03-14 06:56 -0700
    Re: C Compilers QoI BartC <bc@freeuk.com> - 2017-03-14 15:58 +0000
      Re: C Compilers QoI "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2017-03-14 09:22 -0700
      Re: C Compilers QoI scott@slp53.sl.home (Scott Lurndal) - 2017-03-14 16:54 +0000
        Re: C Compilers QoI supercat@casperkitty.com - 2017-03-14 10:24 -0700
          Re: C Compilers QoI scott@slp53.sl.home (Scott Lurndal) - 2017-03-14 17:58 +0000
            Re: C Compilers QoI supercat@casperkitty.com - 2017-03-14 14:12 -0700
              Re: C Compilers QoI Robert Wessel <robertwessel2@yahoo.com> - 2017-03-14 16:34 -0500
              Re: C Compilers QoI Robert Wessel <robertwessel2@yahoo.com> - 2017-03-14 17:36 -0500
                Re: C Compilers QoI BartC <bc@freeuk.com> - 2017-03-14 23:06 +0000
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-14 16:20 -0700
              Re: C Compilers QoI antispam@math.uni.wroc.pl - 2017-03-15 02:32 +0000
                Re: C Compilers QoI BartC <bc@freeuk.com> - 2017-03-15 12:49 +0000
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-15 11:56 -0700
                Re: C Compilers QoI BartC <bc@freeuk.com> - 2017-03-15 23:09 +0000
                Re: C Compilers QoI scott@slp53.sl.home (Scott Lurndal) - 2017-03-16 18:17 +0000
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-16 11:47 -0700
                Re: C Compilers QoI Ian Collins <ian-news@hotmail.com> - 2017-03-17 07:50 +1300
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-16 12:59 -0700
                Re: C Compilers QoI David Brown <david.brown@hesbynett.no> - 2017-03-16 21:24 +0100
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-16 14:23 -0700
                Re: C Compilers QoI Ian Collins <ian-news@hotmail.com> - 2017-03-17 11:30 +1300
                Re: C Compilers QoI Ian Collins <ian-news@hotmail.com> - 2017-03-17 11:38 +1300
                Re: C Compilers QoI Gareth Owen <gwowen@gmail.com> - 2017-03-17 05:07 +0000
                Re: C Compilers QoI Ian Collins <ian-news@hotmail.com> - 2017-03-17 20:26 +1300
                Re: C Compilers QoI Gareth Owen <gwowen@gmail.com> - 2017-03-17 07:59 +0000
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-16 16:14 -0700
                Re: C Compilers QoI Robert Wessel <robertwessel2@yahoo.com> - 2017-03-16 22:54 -0500
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-17 09:01 -0700
                Re: C Compilers QoI Ian Collins <ian-news@hotmail.com> - 2017-03-26 14:16 +1300
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-26 14:19 -0700
                Re: C Compilers QoI BartC <bc@freeuk.com> - 2017-03-26 22:43 +0100
                Re: C Compilers QoI GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-03-27 01:28 +0200
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-26 22:07 -0700
                Re: C Compilers QoI BartC <bc@freeuk.com> - 2017-03-27 11:28 +0100
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-27 07:38 -0700
                Re: C Compilers QoI BartC <bc@freeuk.com> - 2017-03-27 16:23 +0100
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-27 08:55 -0700
                Re: C Compilers QoI BartC <bc@freeuk.com> - 2017-03-27 17:01 +0100
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-27 10:03 -0700
                Re: C Compilers QoI GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-03-27 17:58 +0200
                Re: C Compilers QoI already5chosen@yahoo.com - 2017-03-27 03:54 -0700
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-27 08:46 -0700
                Re: C Compilers QoI scott@slp53.sl.home (Scott Lurndal) - 2017-03-27 17:47 +0000
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-27 11:48 -0700
                Re: C Compilers QoI Robert Wessel <robertwessel2@yahoo.com> - 2017-03-27 15:37 -0500
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-27 14:46 -0700
                Re: C Compilers QoI Robert Wessel <robertwessel2@yahoo.com> - 2017-03-27 20:28 -0500
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-28 01:18 -0700
                Re: C Compilers QoI Robert Wessel <robertwessel2@yahoo.com> - 2017-03-28 18:24 -0500
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-29 07:40 -0700
                Re: C Compilers QoI David Brown <david.brown@hesbynett.no> - 2017-03-29 17:05 +0200
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-29 11:07 -0700
                Re: C Compilers QoI antispam@math.uni.wroc.pl - 2017-03-31 04:04 +0000
                Re: C Compilers QoI bartc <bc@freeuk.com> - 2017-03-31 10:53 +0100
                Re: C Compilers QoI Malcolm McLean <malcolm.mclean5@btinternet.com> - 2017-03-31 07:35 -0700
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-31 08:07 -0700
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-31 07:54 -0700
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-31 07:43 -0700
                Re: C Compilers QoI Ian Collins <ian-news@hotmail.com> - 2017-03-17 11:21 +1300
                Re: C Compilers QoI Ian Collins <ian-news@hotmail.com> - 2017-03-17 11:24 +1300
                Re: C Compilers QoI BartC <bc@freeuk.com> - 2017-03-16 22:15 +0000
                Re: C Compilers QoI scott@slp53.sl.home (Scott Lurndal) - 2017-03-17 12:31 +0000
                Re: C Compilers QoI already5chosen@yahoo.com - 2017-03-16 15:24 -0700
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-16 16:03 -0700
                Re: C Compilers QoI scott@slp53.sl.home (Scott Lurndal) - 2017-03-17 12:39 +0000
                Re: C Compilers QoI already5chosen@yahoo.com - 2017-03-17 08:27 -0700
                Re: C Compilers QoI antispam@math.uni.wroc.pl - 2017-03-16 01:35 +0000
                Re: C Compilers QoI BartC <bc@freeuk.com> - 2017-03-16 02:18 +0000
                Re: C Compilers QoI antispam@math.uni.wroc.pl - 2017-03-18 00:45 +0000
                Re: C Compilers QoI BartC <bc@freeuk.com> - 2017-03-18 13:12 +0000
                Re: C Compilers QoI antispam@math.uni.wroc.pl - 2017-03-18 20:31 +0000
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-18 17:31 -0700
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-16 09:22 -0700
          Re: C Compilers QoI Nick Bowler <nbowler@draconx.ca> - 2017-03-24 16:13 +0000
            Re: C Compilers QoI supercat@casperkitty.com - 2017-03-24 12:32 -0700
              Re: C Compilers QoI Robert Wessel <robertwessel2@yahoo.com> - 2017-03-24 22:13 -0500
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-25 13:05 -0700
                Re: C Compilers QoI Robert Wessel <robertwessel2@yahoo.com> - 2017-03-27 15:44 -0500
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-27 14:51 -0700
                Re: C Compilers QoI Robert Wessel <robertwessel2@yahoo.com> - 2017-03-27 20:31 -0500
        Re: C Compilers QoI BartC <bc@freeuk.com> - 2017-03-14 17:26 +0000
          Re: C Compilers QoI Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-03-15 12:02 -0500
  Re: C Compilers QoI David Brown <david.brown@hesbynett.no> - 2017-03-14 15:00 +0100
    Re: C Compilers QoI already5chosen@yahoo.com - 2017-03-14 07:36 -0700
      Re: C Compilers QoI David Brown <david.brown@hesbynett.no> - 2017-03-14 15:57 +0100
      Re: C Compilers QoI Andrey Tarasevich <andreytarasevich@hotmail.com> - 2017-03-14 08:11 -0700
        Re: C Compilers QoI BGB <cr88192@hotmail.com> - 2017-03-29 23:51 -0500
    Re: C Compilers QoI BartC <bc@freeuk.com> - 2017-03-14 15:28 +0000
      Re: C Compilers QoI David Brown <david.brown@hesbynett.no> - 2017-03-14 21:41 +0100
  Re: C Compilers QoI Keith Thompson <kst-u@mib.org> - 2017-03-14 09:26 -0700
    Re: C Compilers QoI BartC <bc@freeuk.com> - 2017-03-14 18:23 +0000
      Re: C Compilers QoI Keith Thompson <kst-u@mib.org> - 2017-03-14 12:05 -0700
  Re: C Compilers QoI already5chosen@yahoo.com - 2017-03-14 09:35 -0700
    Re: C Compilers QoI BartC <bc@freeuk.com> - 2017-03-14 17:08 +0000
      Re: C Compilers QoI already5chosen@yahoo.com - 2017-03-14 10:24 -0700
        Re: C Compilers QoI BartC <bc@freeuk.com> - 2017-03-14 17:34 +0000
        Re: C Compilers QoI already5chosen@yahoo.com - 2017-03-14 11:55 -0700
          Re: C Compilers QoI BartC <bc@freeuk.com> - 2017-03-14 19:03 +0000
            Re: C Compilers QoI BartC <bc@freeuk.com> - 2017-03-14 19:06 +0000
            Re: C Compilers QoI already5chosen@yahoo.com - 2017-03-14 12:10 -0700
              Re: C Compilers QoI BartC <bc@freeuk.com> - 2017-03-14 21:14 +0000
                Re: C Compilers QoI already5chosen@yahoo.com - 2017-03-14 14:42 -0700
                Re: C Compilers QoI supercat@casperkitty.com - 2017-03-14 14:53 -0700
                Re: C Compilers QoI BartC <bc@freeuk.com> - 2017-03-14 23:20 +0000
                Re: C Compilers QoI antispam@math.uni.wroc.pl - 2017-03-15 02:43 +0000
  Re: C Compilers QoI jacobnavia <jacob@jacob.remcomp.fr> - 2017-03-14 19:39 +0100
    Re: C Compilers QoI BartC <bc@freeuk.com> - 2017-03-14 19:10 +0000
  Re: C Compilers QoI antispam@math.uni.wroc.pl - 2017-03-14 19:29 +0000
  Re: C Compilers QoI Noob <root@127.0.0.1> - 2017-03-15 09:27 +0100
  Re: C Compilers QoI ed_davis2@yahoo.com - 2017-03-16 15:10 -0700
    Re: C Compilers QoI BartC <bc@freeuk.com> - 2017-03-16 23:19 +0000

csiph-web