اطلاعیه

Collapse
No announcement yet.

متغییر نوع bool در Atmel Studio

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    متغییر نوع bool در Atmel Studio

    سلام
    چرا متغییر نوع bool تو Atmel Studio به اندازه یه بایت جا میگیره؟
    کلا تو زبون cpp اینطوریه یا ...؟
    نــــ_ـــمـــ_ــــیــــ_ـــدونـــــ_ــم.....

    #2
    پاسخ : متغییر نوع bool در Atmel Studio

    نوشته اصلی توسط مجتبی جباری
    سلام
    چرا متغییر نوع bool تو Atmel Studio به اندازه یه بایت جا میگیره؟
    کلا تو زبون cpp اینطوریه یا ...؟
    bool جزو زبان c نیست از بیت فیلد استفاده کنید.
    از جمله ی رفتگان این راه دراز
    باز آمده ای کو که به ما گوید راز
    هان بر سر این دو راهه از روی نیاز
    چیزی نگذاری که نمی آیی باز

    دیدگاه


      #3
      پاسخ : متغییر نوع bool در Atmel Studio

      میخوام یه آرایه از متغیر تک بیتی داشته باشم.
      نــــ_ـــمـــ_ــــیــــ_ـــدونـــــ_ــم.....

      دیدگاه


        #4
        پاسخ : متغییر نوع bool در Atmel Studio

        نوشته اصلی توسط مجتبی جباری
        میخوام یه آرایه از متغیر تک بیتی داشته باشم.
        خوب کدت رو به استراکچر تغییر بده
        از جمله ی رفتگان این راه دراز
        باز آمده ای کو که به ما گوید راز
        هان بر سر این دو راهه از روی نیاز
        چیزی نگذاری که نمی آیی باز

        دیدگاه


          #5
          پاسخ : متغییر نوع bool در Atmel Studio

          امتحان کردم فایده نداشت
          حتی برای یک بیت هم به اندازه یک بایت فضا اشغال میکنه :sad:

          کد:
          struct S {
            // three-bit unsigned field,
            // allowed values are 0...7
            unsigned short b : 1;
          };
          
          S CHECK_BUFFER [1000];
          نــــ_ـــمـــ_ــــیــــ_ـــدونـــــ_ــم.....

          دیدگاه


            #6
            پاسخ : متغییر نوع bool در Atmel Studio

            نوشته اصلی توسط مجتبی جباری
            امتحان کردم فایده نداشت
            حتی برای یک بیت هم به اندازه یک بایت فضا اشغال میکنه :sad:

            کد:
            struct S {
              // three-bit unsigned field,
              // allowed values are 0...7
              unsigned short b : 1;
            };
            
            S CHECK_BUFFER [1000];
            آره ولی این تا هشت بیت همین یک بایت میمونه .
            از جمله ی رفتگان این راه دراز
            باز آمده ای کو که به ما گوید راز
            هان بر سر این دو راهه از روی نیاز
            چیزی نگذاری که نمی آیی باز

            دیدگاه


              #7
              پاسخ : متغییر نوع bool در Atmel Studio

              نوشته اصلی توسط mori64
              آره ولی این تا هشت بیت همین یک بایت میمونه .
              اصولا در زبان برنامه نویسی C متغیر بول باید 1بیت فضا رو اشغال کنه...اگه قرار باشه اونم 8بیت بگگیره که دیگه Bool نیست...منم همین مشکلو دارم...فکر کنم یه جای کار ما اشکال داره...
              تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

              www.intelart.ir


              ساخت کنترلر دما PID فازی با AVR [آموزشی]

              دیدگاه


                #8
                پاسخ : متغییر نوع bool در Atmel Studio

                خب یکی بیاد یه راه حل بگه
                نــــ_ـــمـــ_ــــیــــ_ـــدونـــــ_ــم.....

                دیدگاه


                  #9
                  پاسخ : متغییر نوع bool در Atmel Studio

                  نوشته اصلی توسط punisher.x64
                  اصولا در زبان برنامه نویسی C متغیر بول باید 1بیت فضا رو اشغال کنه...اگه قرار باشه اونم 8بیت بگگیره که دیگه Bool نیست...منم همین مشکلو دارم...فکر کنم یه جای کار ما اشکال داره...
                  اصولا در زبان c متغیر بول نداریم کتاب K_R رو ببینید.

                  نوشته اصلی توسط مجتبی جباری
                  خب یکی بیاد یه راه حل بگه
                  برای شما حجم کد مطرحه یا مشکل الگوریتمه ?
                  از جمله ی رفتگان این راه دراز
                  باز آمده ای کو که به ما گوید راز
                  هان بر سر این دو راهه از روی نیاز
                  چیزی نگذاری که نمی آیی باز

                  دیدگاه


                    #10
                    پاسخ : متغییر نوع bool در Atmel Studio

                    نوشته اصلی توسط mori64
                    اصولا در زبان c متغیر بول نداریم کتاب K_R رو ببینید.

                    برای شما حجم کد مطرحه یا مشکل الگوریتمه ?
                    خیلی ممنون...فکر میکردم چون ++C بول داره C هم داره

                    خب حالا راه حلی ندارید که بشه یک بیت از حافظه رو به کار گرفت؟
                    تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                    www.intelart.ir


                    ساخت کنترلر دما PID فازی با AVR [آموزشی]

                    دیدگاه


                      #11
                      پاسخ : متغییر نوع bool در Atmel Studio

                      اولا تو Cpp اگه تو c هم راحی باشه که بهتر
                      دو تا آرایه دارم که یکیش رو فقط یه بیتش رو لازم دارم
                      این ارایه ها هم تو رم فضا اشغال میکنن اگه راهی باشه که هر متغییر فقط یک بایت رو اشغال کنه خوب میشه
                      البته میشه یه متغییر رو به صورت بیت به بیت مورد استفاده قرار داد ولی اینطوری هم الگریتمش پیچیده میشه هم محاسبات cpu میشه
                      اصلا چرا bool باید یک بایت فضا اشغال کنه؟ چون پردازنده 8 بیتی هست اینطوری شده؟
                      یعنی تو بسکام هم به این شکل هست؟
                      نــــ_ـــمـــ_ــــیــــ_ـــدونـــــ_ــم.....

                      دیدگاه


                        #12
                        پاسخ : متغییر نوع bool در Atmel Studio

                        نوشته اصلی توسط مجتبی جباری
                        البته میشه یه متغییر رو به صورت بیت به بیت مورد استفاده قرار داد ولی اینطوری هم الگریتمش پیچیده میشه هم محاسبات cpu میشه
                        در کل حتی وقتی بیت فیلد هم استفاده میکنی خروجی اسمبلی برابر همون کد دست کاری بیتی(BIT MANIPULATE ) یا در اصل (R-M-W )بایت هست .

                        اصلا چرا bool باید یک بایت فضا اشغال کنه؟ چون پردازنده 8 بیتی هست اینطوری شده؟
                        بله
                        البته ظاهرا در AVR-GCC برای عملگر های که دست کاری بیتی هست کد خروجی اسمبلی در حالت دیفالت 16 بیتی :
                        http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_intpromote
                        مرتبط :
                        تو CM3 این مشکل حل شده البته به معماری CM3 برمیگرده :

                        http://www.eca.ir/forum2/index.php?topic=86427.0
                        از جمله ی رفتگان این راه دراز
                        باز آمده ای کو که به ما گوید راز
                        هان بر سر این دو راهه از روی نیاز
                        چیزی نگذاری که نمی آیی باز

                        دیدگاه


                          #13
                          پاسخ : متغییر نوع bool در Atmel Studio

                          نوشته اصلی توسط مجتبی جباری
                          اولا تو Cpp اگه تو c هم راحی باشه که بهتر
                          دو تا آرایه دارم که یکیش رو فقط یه بیتش رو لازم دارم
                          این ارایه ها هم تو رم فضا اشغال میکنن اگه راهی باشه که هر متغییر فقط یک بایت رو اشغال کنه خوب میشه
                          البته میشه یه متغییر رو به صورت بیت به بیت مورد استفاده قرار داد ولی اینطوری هم الگریتمش پیچیده میشه هم محاسبات cpu میشه
                          اصلا چرا bool باید یک بایت فضا اشغال کنه؟ چون پردازنده 8 بیتی هست اینطوری شده؟
                          یعنی تو بسکام هم به این شکل هست؟
                          شما با میکرو 8بیتی ++C کار میکنید؟ oo:
                          مشکل فضا ندارید؟
                          تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                          www.intelart.ir


                          ساخت کنترلر دما PID فازی با AVR [آموزشی]

                          دیدگاه


                            #14
                            پاسخ : متغییر نوع bool در Atmel Studio

                            نوشته اصلی توسط punisher.x64
                            شما با میکرو 8بیتی ++C کار میکنید؟ oo:
                            مشکل فضا ندارید؟
                            http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_cplusplus
                            از جمله ی رفتگان این راه دراز
                            باز آمده ای کو که به ما گوید راز
                            هان بر سر این دو راهه از روی نیاز
                            چیزی نگذاری که نمی آیی باز

                            دیدگاه


                              #15
                              پاسخ : متغییر نوع bool در Atmel Studio

                              نوشته اصلی توسط mori64
                              http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_cplusplus
                              بله میدونم میشه کار کرد دوست من...منظورم حجم کدهای تولید شده ست که با ++C چندبرابر C میشه...تو همون صفحه که لینک دادید نوشته :

                              When programming C++ in space- and runtime-sensitive environments like microcontrollers, extra care should be taken to avoid unwanted side effects of the C++ calling conventions like implied copy constructors that could be called upon function invocation etc. These things could easily add up into a considerable amount of time and program memory wasted. Thus, casual inspection of the generated assembler code (using the -S compiler option) seems to be warranted.
                              تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                              www.intelart.ir


                              ساخت کنترلر دما PID فازی با AVR [آموزشی]

                              دیدگاه

                              لطفا صبر کنید...
                              X