🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #2031

Re: nie widzi stanu flag po “sub”?

#2031
From: Michoo
Date: Wed, 23 Sep 2009 09:37
56 lines
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-mail
References: <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