🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #309571

Re: Błąd kompilacji: Control reaches end of non-void function

#309571
From: Wojciech Muła
Date: Tue, 02 Jan 2018 22:20
33 lines
2348 bytes
On Tuesday, January 2, 2018 at 9:52:30 PM UTC+1, Maciek wrote:
> Mam funkcję która zwraca wskaźnik stosu, jak mogę ją poprawić lub ominąć błąd kompilacji:
> 
> Control reaches end of non-void function
> 
> funkcja:
> 
> unsigned long sp(void) {
>    asm("movl %esp, %eax");
> }


To jest niepoprawny program, bo zapisujesz do eax, a nie
mówisz kompilatorowi, że modyfikujesz ten rejestr.
Mniej więcej tak jest OK asm("mov %esp, %eax") : : : "eax"),
ale najlepiej unikać podawania rejestrów wprost.

Zrób jak człowiek:

unsigned long sp() {
 unsigned long result;
 asm("movl %%esp, %0" : "=r" (result));
 return result;
}

Pod %0 kompilator wstawi co mu będzie pasowało, Ty jedynie
piszesz, że chcesz żeby Ci to "result"; gcc -O2 generuje
najkrótszy możliwy program:

movl esp, rax
ret

w.
Technical Details
Message-ID: <389bedb5-4a18-4d3c-99bc-cc975f9de2cf@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer02.am4!peer.am4.highwinds-media.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!g35no5755558qtk.1!news-out.google.com!t48ni2301qtc.1!nntp.google.com!g35no5755553qtk.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <12c62252-1856-414e-9237-61a257bf9d99@googlegroups.com>

Show Full Headers
Complete Article Headers
X-Received: by 10.200.6.208 with SMTP id j16mr33377823qth.20.1514931613528;        Tue, 02 Jan 2018 14:20:13 -0800 (PST)
X-Received: by 10.31.48.2 with SMTP id w2mr856723vkw.13.1514931613041; Tue, 02 Jan 2018 14:20:13 -0800 (PST)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer02.am4!peer.am4.highwinds-media.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!g35no5755558qtk.1!news-out.google.com!t48ni2301qtc.1!nntp.google.com!g35no5755553qtk.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.c
Date: Tue, 2 Jan 2018 14:20:12 -0800 (PST)
In-Reply-To: <12c62252-1856-414e-9237-61a257bf9d99@googlegroups.com>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=2a01:112f:80d:ee00:d6be:d9ff:fe09:8928; posting-account=VFwkXwoAAADdT4-lLKRZrMYkTjizGoyn
NNTP-Posting-Host: 2a01:112f:80d:ee00:d6be:d9ff:fe09:8928
References: <12c62252-1856-414e-9237-61a257bf9d99@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <389bedb5-4a18-4d3c-99bc-cc975f9de2cf@googlegroups.com>
Subject: Re: Błąd kompilacji: Control reaches end of
 non-void function
From: Wojciech Muła <wojciech_mula@poczta.onet.pl>
Injection-Date: Tue, 02 Jan 2018 22:20:13 +0000
X-Received-Body-CRC: 3729447379
X-Received-Bytes: 2368
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit