Article View: pl.comp.lang.c
Article #310138Re: Coroutines w (GNU) C
From: M.M.
Date: Fri, 31 Jan 2020 19:43
Date: Fri, 31 Jan 2020 19:43
67 lines
4843 bytes
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-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> <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