Article View: pl.comp.lang.c
Article #310137Re: Coroutines w (GNU) C
From: heby
Date: Fri, 31 Jan 2020 19:33
Date: Fri, 31 Jan 2020 19:33
56 lines
4069 bytes
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-mailReferences:
<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