Article View: pl.comp.lang.c
Article #309147jezyk ą
From: (fir)
Date: Mon, 13 Feb 2017 19:20
Date: Mon, 13 Feb 2017 19:20
89 lines
3793 bytes
3793 bytes
nazwa to troche zart (fonetycznie mozna tez czytac jako om)
chodzi mi o to ze chyab chcialbym sie pobawic w pisanie
kompilatora (takiego ktoryby przerabial prosty jezyk
przeze mnie zdefiniowany na wirtualny asembler mojej tez
mojej wlasnej produkcji)
aby to bylo mozliwie latwe pomyslalem ze powinno to byc cos prostszego od b (a bardziej skomplikowanego od a/asma więc ą ;-)
[ogolnie chodzi o dwa cele na raz
1) chce napisac mozliwie prosty kompilator
2) chce sobie oszczedzic pisania procedur w asmie tak ze
ten jezyk powinien jednak pozwalac pisac prosciej niz
w asmie
pytanie jak powinien wygladac taki prosty jezyk - jakies idee?- ogolnie wyszlo mi ze to powinno byc cos c-podobnego (bo c jest najlepszy) powinno byc jednak maksymalnie proste tak
by maksymalnie uproscic pisanie kompilatora
obecnie wymyslilem o tak ze moglbym sie pozbyc wszysttkich zmiennych lokalnych jako ze w asmie mam 26 rejestrow (od a do z) moge dozwolic po prostu uzywanie tylko tych rejestrow jako lokalnych (w razie potrzeby moge ich dodac nawet wiecej w asemblerze) byloby to raczej prostsze niz nawet b
zastanawiam sie czy moze jednak powinienem to uproscic jeszcze
bardziej (?)
pozatym musze sie zastanowic jak przerobic kodw c powiedzmy taki jak ponizej na to ą (om) no i jak napisac ten prosty kompilator
jak ktos ma jakies uwago to chetnie przeczytam, jak sie sam zastanowie moze dopisze pare uwag
nizej przyklad kodu do przerobienia i pozniej skompilowania
int mandelbrot_n( float cRe, float cIm, int max_iter )
{
float re = cRe;
float im = cIm;
float rere=re*re;
float imim=im*im;
for(int n=1; n<=max_iter; n++)
{
im = (re+re)*im + cIm;
re = rere - imim + cRe;
rere=re*re;
imim=im*im;
if ( (rere + imim) > 4.0 )
return n;
}
return 0;
}
void mandelbrot_test(int CLIENT_X, int CLIENT_Y, double ox, double oy, double lx, int max_iter)
{
SetupPalette( 550, 455, 45 );
double ly = lx * CLIENT_Y / CLIENT_X;
double dx = lx / CLIENT_X;
double dy = ly / CLIENT_Y;
double ax = ox - lx * 0.5 + dx * 0.5;
double ay = oy - ly * 0.5 + dy * 0.5;
for( int j=0 ; j<CLIENT_Y; j++ )
{
double c_im = ay + j * dy;
for( int i=0 ; i<CLIENT_X; i++ )
{
double c_re = ax + i * dx;
int n = mandelbrot_n(c_re, c_im, max_iter);
SetPixelSafe(i ,j, palette[n]);
}
}
}
Technical Details
Message-ID:
<058db5ae-f075-46be-a366-96b45f2ffe09@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!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder1.iad1.usenetexpress.com!216.166.98.84.MISMATCH!border1.nntp.dca1.giganews.com!nntp.giganews.com!i7no1245503qta.1!news-out.google.com!78ni2776itm.0!nntp.google.com!e137no952522itc.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailShow Full Headers
Complete Article Headers
X-Received: by 10.13.196.129 with SMTP id g123mr8903593ywd.140.1487013637447; Mon, 13 Feb 2017 11:20:37 -0800 (PST) X-Received: by 10.157.62.29 with SMTP id a29mr1577639otd.5.1487013637397; Mon, 13 Feb 2017 11:20:37 -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!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder1.iad1.usenetexpress.com!216.166.98.84.MISMATCH!border1.nntp.dca1.giganews.com!nntp.giganews.com!i7no1245503qta.1!news-out.google.com!78ni2776itm.0!nntp.google.com!e137no952522itc.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.c Date: Mon, 13 Feb 2017 11:20:37 -0800 (PST) Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=5.172.255.146; posting-account=Sb6m8goAAABbWsBL7gouk3bfLsuxwMgN NNTP-Posting-Host: 5.172.255.146 User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <058db5ae-f075-46be-a366-96b45f2ffe09@googlegroups.com> Subject: jezyk ą From: "(fir)" <profesor.fir@gmail.com> Injection-Date: Mon, 13 Feb 2017 19:20:37 +0000 Lines: 100 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit