int main (int argc, char* argv[]) { // constexpr Gpio led(Port::A,7); // led.init(GpioMode::Out,GpioOutType::PP,GpioSpeed::s100MHz,GpioPuPd::PullDown); while (1) { // led.toggle(); } } arm-none-eabi-size —format=berkeley "6.elf" text data bss dec hex filename 5357 160 740 6257 1871 6.elf Finished building: 6.siz int main (int argc, char* argv[]) { constexpr Gpio led(Port::A,7); led.init(GpioMode::Out,GpioOutType::PP,GpioSpeed::s100MHz,GpioPuPd::PullDown); while (1) { led.toggle(); } } Invoking: Cross ARM GNU Print Size arm-none-eabi-size —format=berkeley "6.elf" text data bss dec hex filename 5421 160 740 6321 18b1 6.elf Finished building: 6.siz

Комментарии: 40

  1. Dmitry

    А я вижу 64

    • Kirill

      64, мой проеб) я 21 -57 считал))

  2. Anonim

    я думал ты тупо число строк в листинге сосчитал это че text data bss dec hex filename 5421 160 740 6321 18b1 6.elf это еще всякие стартапы и либси?

    • Kirill

      text это код, дата это оперативка, bss это заранее проинициализированные данные которые в стартапе копируется из флеша в оперативку, dec это занятый размер флеша, hex это его представление в хексе да там, всего напихано я по этому только по разнице и смотрел

      • Anonim

        ага, понял, получилось 64 ага, по листинку тоже так, я на 4 байта ошибся

        • Kirill

          нахера кстате там ноп вконце?) я вот не понял)

          • Anonim

            вот это? 00000a98: bne.n 0xa84

            • Kirill

              если собираешь пустой мейн, ловишь вот это 00000a5c: b.n 0xa5c 00000a5e: nop

              • Kostya

                Может программа должна что-то сделать обязательно?)

                • Anonim

                  нет, есть же барьеры

                  • Kirill

                    и после того листинга что я привел там так 00000a92: ite eq 00000a94: streq r1, [r3, #24] 00000a96: str r2, [r3, #24] 00000a98: bne.n 0xa84 00000a9a: nop 00000a9c: andmi r3, r2, r0, lsl #16 00000aa0: andmi r0, r2, r0 но до нопа мы никогда не добераемся

                    • Anonim

                      а конвейер его префетчит

                      • Kostya

                        NOPs serve several purposes: They allow the debugger to place a breakpoint on a line even if it is combined with others in the generated code.It allows the loader to patch a jump with a different-sized target offset.It allows a block of code to be aligned at a particular boundary, which can be good for caching.It allows for incremental linking to overwrite chunks of code with a call to a new section without having to worry about the overall function changing size.

                        • Anonim

                          bne это же бранч по условию

                          • Kirill

                            но там всегда 1 там while (1) стоит)

                            • Anonim

                              а, ну вот, номпами выравнивает чтоль?

                              • Kostya

                                Я хз, так на стековерфлоу Либо для дебага

                                • Anonim

                                  ну пади 16 разрядов и у bne.n 16 что бы закэшировать нормально ставит nop к bne.n наверное )

                                  • Kostya

                                    Вот казалось бы, что сложного на асме код писать А ведь столько нюансов знать надо Особенностей машины В этом плане мне нравится пик

                                    • Anonim

                                      иногда проще на сях накатать и выдернуть листинг и себе вставить)

                                      • Kostya

                                        Там всего то инструкций 30

                                        • Anonim

                                          нет 112 чтоль

                                          • Kostya

                                            Опкодов да

                                            • Anonim

                                              pic17 точно

                                              • Kirill

                                                в thumb2 можно даже не пытаться лезть имхо, слишком современные контроллеры разрослись инструкциями) но меня приколо наличие инструкций которые выполняются за 0 тактов

                                                • Anonim

                                                  в смысле? опкод это и есть инструкция, или ты о чем? форвардинг ?

                                                  • Kirill

                                                    ща скину, там условный переход был и еще что то

                                                  • Kirill

                                                    во, нашел наконец то) http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0439b/CHDDIGAC.html там An IT instruction can be folded onto a preceding 16-bit Thumb instruction, enabling execution in zero cycles. и The number of cycles required to perform the barrier operation. For DSB and DMB, the minimum number of cycles is zero. For ISB, the minimum number of cycles is equivalent to the number required for a pipeline refill.

                                                    • Kostya

                                                      Машинные инструкции 4 вроде Но для программиста считай одна Легко запомнить

                                                    • Anonim

                                                      это барьеры, я о них выше писал. это короче ты дожидаешься когда pipeline flush сделает, т.е. все инструкции выполнятся, тогда можно исполнять инструкции ниже за DMB or DSB. прикольная штука, если нужно что то куда то перемапить. я лично буквально сегодня это заюзал

                                                      • Kirill

                                                        барьеры, да, я тоже юзал, но через std::atomic, мы общались по этому поводу вроде)

                                                        • Anonim

                                                          нет, там любая инструкция выполняется за 4 клока. некоторые за 8, типа goto call, lcall tblwr не, не со мной. а ты где их применял?

                                                          • Kirill

                                                            самодельный семафор для многозадачной системы, чтобы не из перывания, не из другого потока, ниоткуда нельзя было поменять этот семафор либа должна была быть отдельна от фриртоса, по этому фриртоса семафор не подходил

                                                            • Anonim

                                                              хм, что-то припоминаю. а видоса с тобой небыло, где ты все это рассказывал?

                                                              • Kirill

                                                                был по плюсам и по прерываниям. конретно про системы синхронизации не было ничего я кстате 26 еду в мск на встречу может там и пересечемся

                                                                • Anonim

                                                                  да, там по прерываниям было, мне понравилось, энергично и доступно объясняешь) да, не проспать бы, я отпуск спецом отсрочил за 26-е)

                                                                  • Kirill

                                                                    я там чуть в штаны не обосрался от страха) может от этого и енергично))

                                                                    • Anonim

                                                                      даже вида не подал если честно) да, ок вышло)) нужно больше практики) я вот не лучше расскажу, хотя на работе все ок, но перед незнакомыми людьми барьер чувствую

                                        • Anonim

                                          http://vak.ru/doku.php/proj/pic/pic17-opcodes

                                          • Kostya

                                            Я имел в виду отличных На асме куча повторяется В зависимости от операндов

Не нашли ответ?

Вам также может быть интересно