🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Coroutines w (GNU) C

#310137
From: heby
Date: Fri, 31 Jan 2020 19:33
56 lines
4069 bytes
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

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.
Technical Details
Message-ID: <r11veh$bii$1@dont-email.me>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!eternal-september.org!feeder.eternal-september.org!reader01.eternal-september.org!.POSTED!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>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!eternal-september.org!feeder.eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: heby <heby@poczta.onet.pl>
Newsgroups: pl.comp.lang.c
Subject: Re: Coroutines w (GNU) C
Date: Fri, 31 Jan 2020 20:33:38 +0100
Organization: A noiseless patient Spider
Lines: 56
Message-ID: <r11veh$bii$1@dont-email.me>
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>
Mime-Version: 1.0
Injection-Date: Fri, 31 Jan 2020 19:33:38 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="096d6be064dbc3f9d2c0a2f3fec52bb9"; logging-data="11858"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+S1tIr9y4Q7XuEWUU3377w"
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.1
Cancel-Lock: sha1:6ywfKuFEs5yEvBRe/US0cTVZ9K8=
In-Reply-To: <r10lbv$hvd$1@gioia.aioe.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit