PEJI.IR

اجرای فایل .js

۱۴۰۱ مرداد ۲۶, چهارشنبه ساعت ۶:۴۶

خب الان فایل .js رو به صورت جدا از فایل .do اجرا میکنم. فعلا کمی باگ دارم که باید اونها رو برطرف کنم.

کامپایل dolang

۱۴۰۱ مرداد ۲۴, دوشنبه ساعت ۱۸:۲۷

آیا میشه dolang رو کامپال کرد ؟

بله. کامپایل شدن کلا ساختار پیچیده ای نیست و یک سری استاندارد برای سیستم عامل های مختلف هست که سیستم عامل به صورت پیش فرض اونها رو به همین شیوه ای که ما در زبان jit اجرا میکنیم، اجرا میکنه.

مثلا استاندارد لینوکس elf و coff هست. ( elf جایگزین coff هست که در یونیکس قبلا استفاده میشده ... )

یا ویندوز هم استاندارد خودش رو دارد.

مثلا زبان جاوا به جای اینکار استاندارد خودش رو تعریف کرده که شما به javac فایل رو کامپال میکنید و با java اون رو اجرا میکنید ...

dolang رو هم میشه به هر دو روش پیاده سازی کرد. من مد نظرم هست که بایت کد استاندارد cpu رو به همین شکلی که خروجی میدم با اطلاعات بیشتری ذخیره کنم و مثلا با یک اسمبلر ساده برنامه رو اجرا کنم. اینکار صد در صد در سرعت اجرا شدن برنامه تاثیر زیاده داره ...

برطرف کردن باگ ها با توسعه extension ها

۱۴۰۱ مرداد ۲۴, دوشنبه ساعت ۱۷:۰۳

برای اینکه بتونم باگهایی که داخل برنامه هست رو برطرف کنم باید با dolang برنامه های کاربردی بنویسم که بشه از اون ها استفاده کرد. مثلا با ایجاد بستر استفاده از mysql و یا یک http server ساده یا یک json parser ساده میشه خیلی از باگ ها رو برطرف کرد.

انجام or_or یا ||

۱۴۰۱ مرداد ۲۰, پنجشنبه ساعت ۱۱:۱۸

خب این قسمت رو هم انجام دادم. بعد از انجام && باید not یا ! هم پیاده سازی کنم. بعد از اون به سراغ += میرم. این قسمت رو که تموم کنم به بررسی memory leak برای کلاس ها داخل scope میرسم و اون رو تموم میکنم. بعدش هم پیاده سازی let و بعد از اون هم بررسی نهایی و تست های نهایی رو انجام میدم و پروژه رو برای x86 میبندم و به سراغ x64 میرم ...

اسمبلی

۱۴۰۱ مرداد ۱۷, دوشنبه ساعت ۹:۵۵

یک نکته ای که خیلی بد جا افتاده رو من اینجا بگم

اسمبلی سخت نیست. نوشتن کد با اسمبلی سخت هست

یا مثلا brain fuck سخت نیست. نوشتن کد با brain fuck سخت هست

این ایجاد ذهنت خوب باعث میشه اگر دوست داشته باشید اسمبلی یاد بگیرید بدونید که اصلا چیز پیچیده و سختی نیست

خواندن string index به عنوان آرایه

۱۴۰۱ مرداد ۱۶, یکشنبه ساعت ۱۸:۳۹

این قسمت رو هم تکمیل کردم

main() {


	var s3 = "test";
	print( s3[1] );
	print("\n");

	print( s3[1]+"\n" )

	s3[0] = 'a';
	s3[1] = 'd';

	print( s3 )
}

حذف اجبار استفاده از نقطه ویرگول برای پایان دستور

۱۴۰۱ مرداد ۱۶, یکشنبه ساعت ۱۱:۴۱

این امکان رو اضافه کردم که از خط جدید بشه به عنوان پایان دستور استفاده کرد ( شبیه به js ) با این تفاوت که خللی در string های به صورت چند خطی به وجود نمیاد. این به نظر من مشکل js هست که مطمئنا اوایل کار نتونستن اون رو برطرف کنن و به این شکل مونده ...

پایان پیاده سازی همه ی قسمت های مربوط به کلاس ها و توابع و ... و پیاده سازی نهایی let و operator ها

۱۴۰۱ مرداد ۱۳, پنجشنبه ساعت ۱۰:۰۴

خب تمامی قسمت های مربوط به کلاس ها و توابع و متغییر ها و ... پیاده سازی شد.

httpServer.do مثال خیلی خوبی هست که با تکمیل اون میتونم یک httpServer خیلی ساده پیاده سازی کنم.

برای تموم شدن پروژه در قسمت x86 باید پیاده سازی let و operator ها رو انجام بدم. تا پروژه برای قسمت x86 قابل استفاده باشه. البته این رو هم بگم که تایپ های float, long, hex رو هم باید در برنامه پیاده سازی کنم. این قسمت ها خودش در بک کار خیلی زمانبر هست. من این قسمت ها رو گذاشتم برای آخر کار چون جذابیتش برام کمتر از پیاده سازی کلاس و ... بود.

صدا زدن تابع قبل از تعریف

۱۴۰۱ مرداد ۱۳, پنجشنبه ساعت ۷:۳۶

این قسمت رو هم تکمیل کردم.

چند تا جا چند تا باگ دارم که اونها رو باید برطرف کنم تا پروژه به عنوان dolang تکمیل بشه.

برای js یک پروژه دیگه تعریف میکنم و به صورت مجزا اون رو توسعه میدم

main() {
	test();
}

test() {
	print("here");
}
class test {
	a() {
		this.b();
	}

	b() {
		print("in b\\n");
	}
}

main() {
	var a = new test;
	a.a();
}