Article View: pl.comp.lang.asm
Article #2031Re: nie widzi stanu flag po “sub”?
From: Michoo
Date: Wed, 23 Sep 2009 09:37
Date: Wed, 23 Sep 2009 09:37
56 lines
2434 bytes
2434 bytes
gupi manʼaʼgo pisze:
> mamy strukturę, której istotny fragment jak niżej:
> ❝
> struct s_t
> { // …
> unsigned n;
> // …
> };
> ❞
> mamy dwie równoważne w efekcie procedury jak niżej:
Nie, nie są równoważne.
> ❝
> void
> proc_1( struct s_t *s,
> unsigned count
> )
> { if( s->n >= count )
> s->n -= count;
> else
> s->n = 0;
> }
Ta funkcja zmniejsza wartość o maksymalnie count nie przekraczając 0.
> void
> proc_2( struct s_t *s,
> unsigned count
> )
> { if(( s->n -= count ) > count )
> s->n = 0;
> }
Ta funkcja zmniejsza wartość o count (dokonując ewentualnych "zawinięć"
- typy są unsigned) a gdy wynik jest nadal większy od count to go
zeruje. - w porównaniu z proc_1 nie zawsze ustawia 0 gdy było przejście
przez 0 za to zawsze zeruje wynik gdy n>=2*count.
> co zrobić, by kompilator ‟gcc 4.3.2” zauważył, że po odejmowaniu instru-
> kcją “sub” ma flagi, które może wykorzystać zamiast umieszczać instruk-
> cje “cmp”?
Kompilator wygenerował to co napisałeś.
> 1. czy się mylę?
tak
> 3. co zrobić, by zapis w ‟C” był ładny, a mimo to nie było nadmiarowej
> “cmp”?
Ale to zapis _pierwszej_ funkcji jest 'ładny'. Spojrzenie na nią od razu
mówi jaki ma być efekt. Zapis drugiej funkcji imo jest przynajmniej
nieintuicyjny - coś jak jak pisanie if(!strcmp(a,b)) zamiast
if(strcmp(a,b)==0).
> PS „drogie koleżanki i koledzy”… aha, miało być na początku. ;->
P.S.
Skąd wziąłeś taki sposób formatowania?
--
Pozdrawiam
Michoo
Technical Details
Message-ID:
<h9cq90$5uc$1@news.onet.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mailReferences:
<h9c3fs$bi4$1@adenine.netfront.net>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mail From: Michoo <michoo_news@vp.pl> Newsgroups: pl.comp.lang.c,pl.comp.lang.asm Subject: Re: nie widzi stanu flag po “sub”? Date: Wed, 23 Sep 2009 11:37:50 +0200 Organization: http://onet.pl Lines: 56 Message-ID: <h9cq90$5uc$1@news.onet.pl> References: <h9c3fs$bi4$1@adenine.netfront.net> NNTP-Posting-Host: c2-211.icpnet.pl Mime-Version: 1.0 X-Trace: news.onet.pl 1253698656 6092 62.21.2.211 (23 Sep 2009 09:37:36 GMT) X-Complaints-To: niusy@onet.pl NNTP-Posting-Date: Wed, 23 Sep 2009 09:37:36 +0000 (UTC) User-Agent: Thunderbird 2.0.0.19 (X11/20090105) In-Reply-To: <h9c3fs$bi4$1@adenine.netfront.net> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit