پاسخ : [گفتگو و تبادل نظر] مقایسه کامپایلرهای CCS و MIKRO C
البته ورژن های قبلی میکرو سی واقعا از این بابت اذیت میکرد
بعضی وقتها پس از دیباگ بسیار متوجه میشدم ، یک خط از کد را اجرا نمی کند و باید آن خط تکرار شود تا اجرا شود
ولی بعدا ممکن بود آن دو خط دوبار اجرا شوند و افتضاح به بار بیاد
ولی گویا در آخرین نسخه ، اکثر مشکلات حل شده
یعنی ورژن 6.6.3 و بالاتر
برنامه من الان 99 در صد فلش رو پر کرده
با چهار اینتراپت فعال و برنامه ای مملو از پوینتر ، بدون هیچ مشکلی در 48 مگاهرتز اجرا میشود
من متوجه شدم کدی که میکر سی برای ساختار های چند بعدی پوینتری (یا آرایه ای) تولید میکند ، بسیار حجیم است
در این گونه مواقع متعیر هایی که بصورت پوینتری مورد استفاده شوند را در متغیر های محلی ذخیره میکنم (کش میکنم)
و بعد از دسترسی و تغییر متغیر ، آن را در جای خودش قرار میدهم
به عنوان مثال به جای کد زیر:
از کد زیر استفاده میکنم
حجم کد بسیار کاهش پیدا میکند
اصولا باید کامپایلر همین کار را خودش انجام میداد
نوشته اصلی توسط mehran901
نمایش پست ها
بعضی وقتها پس از دیباگ بسیار متوجه میشدم ، یک خط از کد را اجرا نمی کند و باید آن خط تکرار شود تا اجرا شود
ولی بعدا ممکن بود آن دو خط دوبار اجرا شوند و افتضاح به بار بیاد
ولی گویا در آخرین نسخه ، اکثر مشکلات حل شده
یعنی ورژن 6.6.3 و بالاتر
برنامه من الان 99 در صد فلش رو پر کرده
با چهار اینتراپت فعال و برنامه ای مملو از پوینتر ، بدون هیچ مشکلی در 48 مگاهرتز اجرا میشود
نوشته اصلی توسط elfian
نمایش پست ها
من متوجه شدم کدی که میکر سی برای ساختار های چند بعدی پوینتری (یا آرایه ای) تولید میکند ، بسیار حجیم است
در این گونه مواقع متعیر هایی که بصورت پوینتری مورد استفاده شوند را در متغیر های محلی ذخیره میکنم (کش میکنم)
و بعد از دسترسی و تغییر متغیر ، آن را در جای خودش قرار میدهم
به عنوان مثال به جای کد زیر:
کد:
if(menu[i].field[j].val>0) menu[i].field[j].val++;
از کد زیر استفاده میکنم
کد:
Xmenu * m=&menu[i]; Xfield * f=&m->field[j]; int v=f->val; if(v>0) v++; f->val=v;
اصولا باید کامپایلر همین کار را خودش انجام میداد
دیدگاه