
نوشته شده توسط
pswin.pooya
تابع printf در فایل stdio.c پروژه آراکس هست. من خواستم نشون بدم که لازم نیست دنبال / بگردید خود کامپایلر به معادلش ترجمه می کنه. بعد کد من برای پرینت زمان دیباگ هست. برای من اهمیتی نداره که /n باشه یا /n/r . مهم اینه که بره خط بعد.
کامپایلر این رو "hello world \n" بصورت آرایه ای مثل آرایه زیر تفسیر نمیکنه :
{'h','e','l','l','o',' ','w','o','r','l','d','\n'};
در ضمن اگر دو برنامه ی زیر را در یک کامپایلر C اجرا کنید تفاوت را متوجه میشوید: printf("Hello \r world");
printf("Hello \n world");
نمی گم کار شما اشتباهه ولی بنظر من روش استاندارد کار باید پیاده بشود. بهرحال شاید بخواهید بجای استفاده از gotoxy از r\ برای بازگشت به ابتدای خط جاری استفاده کنید و اون به خود شما بستگی دارد.

نوشته شده توسط
pswin.pooya
۱. برای مانیتورهای CRT هستش
۲. در مورد فرکانس و اثر فرکانس هست. بله مانیتورهای CRT چون یک لایه فسفر دارن و تابش زیاد یا با اندازه قوی به لایه فسفر می تونه باعث شه خاصیتش از بین بره. مثلا توی بانکها که همیشه یه برنامه با مانیتور نمایش داده می شد قسمتهای خاصی از لایه فسفر رو می سوزوند.در نهایت بعد از اینکه مانیتور رو روشن کردی می تونستی رد برنامه رو ببینی بدون اینکه برنامه باز باشه. (اصلا برای همین بود که screen saver رو ساختن) اما در مورد میکرو چیپ و اثرات دیگه جدای اینکه عملا دیگه از این مانیتورها استفاده نمیشه. حتی مانیتورهایی هم که موجود هستن در مقابل اینجور موارد safe شده بودن.
می گم اگر موارد نرم افزاری باشه که باعث خرابی سخت افزاری بشه الان شما باید ماهی یکبار سخت افزار عوض می کردین. تنها آسیبی که میشه با نرم افزار به سخت افزار زد گرم کردن اون با استفاده ازش هست (حالا یا کار کشیدن ازش و یا بالا بردن فرکانس) که باز جدای اینکه بخاطر بار زیاد راحت کاربر می تونه متوجه بشه و ویروس کشهای رفتار شناس فورا متوجه جریان می شن. یه سیستم خنک کننده خوب می تونه جلوی اون رو بگیره. مثلا همین چند وقت پیش یه ویروس برای اندروید با استفاده از باز کردن دوربین full hd باعث می شد سخت افزار گوشیهایی مثل sony z3 گرم و کرش کنه. که البته بعد از کرش خود ویروس بر اساس خطای سخت افزاری. دوباره سخت افزار خنک می شد. سخت افزار های دیجیتالی تنها در صورت گرما می سوزن. حتی زمانی که شما بهش ولتاژ اضافه هم شی باعث میشه که جریان بیشتر بکشه و گرم شه و بسوزه. یعنی حتی با ولتاژ اضافه هم در صورت داشتن سیستم خنک کننده خود نمی تونید اون رو بسوزونید که اصلا همینکار (اعمال ولتاژ اضافه) یکی از راه های دیباگینگ سخت افزاری هست که بصورت لحظه ای اعمال می کنن که تا دما بالا نره. حتی فرکانس بالا هم خودش نمی سوزنه بلکه گرمای تولید شده از رابطه زیر هست که می تونه باعث سوختن بشه
h = v^2 * freq * c * num_tran
گرمای تولیدی = ولتاژ به توان دو * فرکانس * نشست خازنی * تعداد ترانزستور
خلاصه کلام اگر شما این گرمای تولید شده رو بتونید مهار کنید به هیچ عنوان سخت افزار دیجیتال شما آسیب نمی مینه. (مگر اینکه بهش ضربه بزنید).
جدای سخت افزار دیجیتال ما توی کامپیوترها سخت افزار موتوری هم داریم که شامل هارد و فلاپی دیسک و CD-Rom میشه و البته سخت افزار نوری و یکسری از سخت افزارهای آنالوگ.این سخت افزارهای با روشهای متفاوت میشه گفت در مقابل موارد نرم افزاری safe شدن. حالا از درایور خودشون بگیر تا نرم افزارهایی مثل سیستم عامل و ویروس کش.
1. بله پس بهتره قبل از استفاده بررسی بشه تا بعدها (شاید در یک ماشین قدیمی دیگر) اشکال موجود خطر ایجاد نکنه.
2. متوجه شدم. ممنون

نوشته شده توسط
pswin.pooya
یکی از دلیلهایی که من اصرار دارم که این آموزشها می تونن کمک کنن ولی کافی نیستن. همینه. شما بدون اینکه اطلاعات پایه در مورد سخت افزار و ... داشته باشید آموزش رو می بینید و جلو می رید و به نتیجه می رسید اما حتی بخوایین کار یک تابع اون رو هم عوض کنید نمی تونید چون اطلاعات پایه کافی در مورد کامپایلر و سخت افزار و ... رو ندارید. خود منم همین مشکلها برای پیش اومد یادم میاد که توی مولتی تسکیگ یه باگ داشتم که یک ماه وقت من رو گرفت و تنها دلیلش این بود که متوجه رفتار درست کامپایلر در کامپایل کد نشده بودم. تنها با پس و پیش کردن دو خط باگ حل شد. (در صورتی که در برنامه معمولی اصلا امکان نداشت تبدیل به باگ شه). تازه دلیل یکسری از conviction های کدینگ رو فهمیدم. حتی دلیل ساختار یکسری از زبانها مثل پاسکال رو که ازشون بدم می اومد.
خود من با اینکه توی آراکس جواب گرفته بودم و تجربه کافی رو از قدیم داشتم اما سال ۹۰ اینا بود که متوجه شدم باید بشینم بیشتر بخونم که باعث شد تست های زیادی از سخت افزار بگیرم (مثلا همین PITو PIC و ... رو قطعاتش رو از بازار تهیه کردم) یا اینکه سخت افزار ساختم برای خوندن کی برد و ... (هرچند که خیلی ساده بود) و ... از طرف دیگه روی کامپایلرها کار کردم و زبان اسکریپت خودم رو ساختم. همینطور روی پردازنده و معماری اون کار کردم.(مثلا اسمبلی ARM رو یاد گرفتم و یا اینکه ساختار داخلی خود پردازنده ها رو مثل پردازندههای قدیمی و یا حتی جدید مثل ARM و MIPS و ... رو مطالعه کردم) در کنار اون ساختار سیستم عاملهای دیگه رو با جزییات بیشتر مطالعه کردم.
یکی از مسائلی که برای من مشکل ایجاد کرده همین اطلاعات پایه ای بوده و به همین دلیل من به شدت مستندات نویسی انجام میدم. هر چه را که نمی دانم در موردش تحقیق میکنم و بعد یادداشت برداری میکنم تا اگر فراموش کردم از آنها استفاده کنم. منتها اول اینکه عمق تحقیقم رو جوری تنظیم میکنم که با زمان تقریبی خودم برای نتیجه گیری مناسب باشه (فعلاً) دوم اینکه من واقعا نمیدونم اگر بخواهم در مورد مثلاً جزئیات کار فلاپی هارد دیسک یا حتی cpu اطلاعات کسب کنم باید چه کتاب یا مقاله ای را بخوانم در مورد cpu کتاب manual اینتل رو پیدا کردم و قراره خواندن اون رو شروع کنم ولی برای سایر دستگاه ها منبعی نمیشناسم اگر کمکم کنید ممنون میشم.