🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Coroutines w (GNU) C

#310138
From: M.M.
Date: Fri, 31 Jan 2020 19:43
67 lines
4843 bytes
On Friday, January 31, 2020 at 8:33:40 PM UTC+1, heby wrote:
> On 31/01/2020 08:35, Tomasz Kaczanowski wrote:
> >> Przypomnij mi który obecnie używany i popularny kompilator C/C++ 
> >> generuje kod w asemblerze wprost z C/C++ bez warstwy pośredniej?
> > a co to ma do rzeczy, jeśli musisz przystosować bibliotekę standardową 
> > do specyfiki nowego systemu?
> 
> A co to ma do rzeczy kiedy ta bibliteka wymaga przystosowania do 
> pozostałym dziesiątek języków programowania gdzie C++ jest tylko jednym 
> z wielu frontendów? I w dodatku w 95% ta bibliteka składa się z wywołań 
> C wiec musisz ją i tam napisać jeśli chcesz C.
> 
> Bibliteki std w C++ są w postaci kodu źródłowego i poza poprawą bugów i 
> zdefiniowaniem ile ma size_t wiele pracy nie wymagają.
> 
> >> Szczególnie jak odkrywasz że współczesne kompilatory to jakieś 
> >> frontendy, backedy, kody pośrednie, maszyny wirtualne itd itp ...
> > tak... rozmawiamy o c i c++, czy językach korzystających z maszyn 
> > wirtualnych?
> 
> Rozmawiamy o maszynach wirtualnych w środku kompilatora.
> 
> Od prostych drzew, przez drzewa optymalizujące po wirtualną architekturę 
> rejkestrową albo stosową. Na samym końcu, naprawdę na samiuteńkim, lezy 
> sobie generator kodu do języka maszynowego danej architektury. To 
> śladowy element całości procesu kompilacji jeśli chcemy porównać 
> trudność pisania kompilatora.
> 
> Polecam nie bredzić tylko zainteresować się:
> 
> https://gcc.gnu.org/onlinedocs/gccint/index.html
> 
> (etapy pośrednie generacji kodu GENERIC, GIMPLE, RTL).
> 
> https://en.wikipedia.org/wiki/GNU_Compiler_Collection#GENERIC_and_GIMPLE
> 
> Oraz:
> 
> https://llvm.org/
> 
> Oczywiscie generowanie kodu pośredniego ma też przeciwników, np część 
> naukowców uważa że to jest niewydajna metoda:
> 
> https://www.youtube.com/watch?v=pP_zIJSp3WA

Uważam w ogóle że oddzielenie kodu C++ od kodu maszynowego tak bardzo
utrudnia optymalizację, że w praktyce uniemożliwia przeprowadzenie 
pewnych optymalizacji. Maszyna pośrednia by musiała wiedzieć coś o 
kodzie C++, a to uniemożliwiłoby generowanie z innych języków do 
maszyny pośredniej.


> 
> Ale jest też bardzo stara:
> 
> https://en.wikipedia.org/wiki/UNCOL
> 
> Innymi słowy, mój przyjacielu: dopisanie do gcc/llvm *nowej* platformy 
> sprowadza się do napisania backendu, który jest ułamkiem samego 
> kompilatora. A jak już go napiszesz do dostajesz w zasadzie za darmo 
> wsparcie dla *WSZYSTKICH* języków z fronendu. Do C i C++ tak samo 
> dostaniesz jak do Pascala którego nawet nie planowałeś.
> 
> Odpowiedź więc na pytanie: czy ciezko napisać C++ na nową platformę? 
> brzmi: prawie dokładnie tak samo ciezko jak do C.

Pozdrawiam
Technical Details
Message-ID: <848b9155-7823-476f-ba34-bb0ffac9ec4d@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.samoylyk.net!weretis.net!feeder7.news.weretis.net!feeder5.feed.usenet.farm!feed.usenet.farm!feeder.usenetexpress.com!tr3.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
References: <4375b52d-ba21-462a-8844-9bd1a02e9ece@googlegroups.com> <r0k8i5$ifg$1@dont-email.me> <ce3f0b08-658f-4248-b82c-09f093a7f20c@googlegroups.com> <r0kq6d$v6h$1@dont-email.me> <748c5d16-f4a8-43a0-8a56-bea0800e1e04@googlegroups.com> <r0n95e$35l$1@dont-email.me> <f3df206c-11d4-4b22-87ff-fc7aa00935f3@googlegroups.com> <r0nevq$9iq$1@dont-email.me> <ecae4ae1-0b06-4956-8df0-593fa0f1cd01@googlegroups.com> <r0njjv$740$1@dont-email.me> <0e0786af-7b58-4070-b8cd-81f1bda1f432@googlegroups.com> <r0q9iv$23b$1@dont-email.me> <20200128233003.4bf9d9eb@mateusz> <1a207604-09fa-43f2-8d0a-e3ff51b183f4@googlegroups.com> <r0sf4i$d46$1@dont-email.me> <r0u1ac$1mhb$1@gioia.aioe.org> <r0vitt$i8e$2@dont-email.me> <r10lbv$hvd$1@gioia.aioe.org> <r11veh$bii$1@dont-email.me>

Show Full Headers
Complete Article Headers
X-Received: by 2002:ac8:7cb0:: with SMTP id z16mr12602890qtv.276.1580499785673; Fri, 31 Jan 2020 11:43:05 -0800 (PST)
X-Received: by 2002:a25:8502:: with SMTP id w2mr9232412ybk.161.1580499785380; Fri, 31 Jan 2020 11:43:05 -0800 (PST)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.samoylyk.net!weretis.net!feeder7.news.weretis.net!feeder5.feed.usenet.farm!feed.usenet.farm!feeder.usenetexpress.com!tr3.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.c
Date: Fri, 31 Jan 2020 11:43:05 -0800 (PST)
In-Reply-To: <r11veh$bii$1@dont-email.me>
Complaints-To: groups-abuse@google.com
Injection-Info: google-groups.googlegroups.com; posting-host=178.37.229.117; posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
NNTP-Posting-Host: 178.37.229.117
References: <4375b52d-ba21-462a-8844-9bd1a02e9ece@googlegroups.com> <r0k8i5$ifg$1@dont-email.me> <ce3f0b08-658f-4248-b82c-09f093a7f20c@googlegroups.com> <r0kq6d$v6h$1@dont-email.me> <748c5d16-f4a8-43a0-8a56-bea0800e1e04@googlegroups.com> <r0n95e$35l$1@dont-email.me> <f3df206c-11d4-4b22-87ff-fc7aa00935f3@googlegroups.com> <r0nevq$9iq$1@dont-email.me> <ecae4ae1-0b06-4956-8df0-593fa0f1cd01@googlegroups.com> <r0njjv$740$1@dont-email.me> <0e0786af-7b58-4070-b8cd-81f1bda1f432@googlegroups.com> <r0q9iv$23b$1@dont-email.me> <20200128233003.4bf9d9eb@mateusz> <1a207604-09fa-43f2-8d0a-e3ff51b183f4@googlegroups.com> <r0sf4i$d46$1@dont-email.me> <r0u1ac$1mhb$1@gioia.aioe.org> <r0vitt$i8e$2@dont-email.me> <r10lbv$hvd$1@gioia.aioe.org> <r11veh$bii$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <848b9155-7823-476f-ba34-bb0ffac9ec4d@googlegroups.com>
Subject: Re: Coroutines w (GNU) C
From: "M.M." <mmarszik@gmail.com>
Injection-Date: Fri, 31 Jan 2020 19:43:05 +0000
Lines: 86
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit