public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Phil Howard <phil-linux-kernel@ipal.org>
To: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] embarassing typo
Date: Tue, 29 Mar 2005 21:34:43 -0600	[thread overview]
Message-ID: <20050330033443.GA2964@vega.ipal.net> (raw)
In-Reply-To: <yw1xu0mtzy1g.fsf@ford.inprovide.com>

On Wed, Mar 30, 2005 at 04:07:39AM +0200, M?ns Rullg?rd wrote:

| Michael Tokarev <mjt@tls.msk.ru> writes:
| 
| > M?ns Rullg?rd wrote:
| >> "Ronald S. Bultje" <rbultje@ronald.bitfreak.net> writes:
| >>
| >>>--- linux-2.6.5/drivers/media/video/zr36050.c.old	16 Sep 2004 22:53:27 -0000	1.2
| >>>+++ linux-2.6.5/drivers/media/video/zr36050.c	29 Mar 2005 20:30:23 -0000
| >>>@@ -419,7 +419,7 @@
| >>> 	dri_data[2] = 0x00;
| >>> 	dri_data[3] = 0x04;
| >>> 	dri_data[4] = ptr->dri >> 8;
| >>>-	dri_data[5] = ptr->dri * 0xff;
| >>>+	dri_data[5] = ptr->dri & 0xff;
| >> Hey, that's a nice obfuscation of a simple negation.
| >
| > It's not a negation.  This statement always assigns zero to
| > dri_data[5] if dri_data is char[].
| 
| Sure about that?
| 
| __u16 i;
| char c;
| i = 1; c = i * 255; /* c = 255 = -1 */
| i = 2; c = i * 255; /* c = 510 & 0xff = 254 = -2 */
| ...
| 
| Looks like negation to me.

Sure it's negation because 255 _is_ 256 - 1.  Basic finite math.

( x * 256 )                 mod 256 == 0
( ( x * 256 ) - ( x * 1 ) ) mod 256 == - ( x * 1 )
( x * ( 256 - 1 ) )         mod 256 == - ( x * 1 )
( x * 255 )                 mod 256 == - ( x * 1 )
( x * 255 )                 mod 256 == - x

Now what I am interested in is if gcc optimized it to a faster negation
or subtraction instruction.

-- 
-----------------------------------------------------------------------------
| Phil Howard KA9WGN       | http://linuxhomepage.com/      http://ham.org/ |
| (first name) at ipal.net | http://phil.ipal.org/   http://ka9wgn.ham.org/ |
-----------------------------------------------------------------------------

  reply	other threads:[~2005-03-30  3:34 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-03-29 20:36 [PATCH] embarassing typo Ronald S. Bultje
2005-03-29 21:02 ` Måns Rullgård
2005-03-29 21:58   ` Michael Tokarev
2005-03-30  1:40     ` Dmitry Torokhov
2005-03-30  5:53       ` Gene Heskett
2005-03-30 23:38         ` John Pearson
2005-03-31  4:16           ` Gene Heskett
2005-03-30  2:07     ` Måns Rullgård
2005-03-30  3:34       ` Phil Howard [this message]
  -- strict thread matches above, loose matches on Subject: below --
2005-03-29 23:31 Vicente Feito
2005-03-30  3:35 ` Måns Rullgård

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050330033443.GA2964@vega.ipal.net \
    --to=phil-linux-kernel@ipal.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox