Господат такой вопрос, после компилятора файл программы например для какого нибудь мк заливается в виде машинного кода или в виде шестнадцатиричных значений? Если в виде хекса, то какая часть в процессоре отвечает за декодирование например опкода 3E который назначен инструкции mov например? Я правильно понимаю что некий дешифратор, берет из области программы значение(опкод) 3E, дешифрует его получая 111110 и сравнивает со всеми машинными значениями из таблицы с инструкциями которые закладывает завод?

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

  1. Lexx

    как по-твоему выглядит машинный код?

  2. Lexx

    за декодирование отвечает декодер микрокоманд

  3. Byte

    После компилятора идёт ещё и линковщик ;) Заливается бинарь, само собой. hex-файл чуть удобнее для программатора и программиста, можно сразу адреса загрузки указывать.

  4. Lexx

    в общем случае декодер работает несколько сложнее, например x86 имеет инструкции разной длины

    • Kingleonide

      Не не, я тогда уточню, то есть компилятор минует условно ассемблер, как бы глупо не звучало, что у нас нигде нет mov/load, то есть уровня абстрации в виде ассемблера, компилятор СИ сразу генерирует нам абстрактный файл с опкодами 3A 3C CC ...

      • Lexx

        зависит от компилятора же ты чего хочешь в итоге?

      • Byte

        Ассемблер — это для людей :) Вот, с ходу первое, что нашлось. Стоит почитать, думаю: https://i2hard.ru/publications/24825/

        • Kingleonide

          Вот именно что для людей, но си тоже для людей))) Обе абстракции дают конечный результат в виде чего, в виде машинного кода или в виде команд?

          • Byte

            В виде набора битов, которые дальше процессор интерпретирует в зависимости от контекста. Пачка опкодов/данных.

          • Sergy

            в итоге должен быть машинный код. в каком-то из форматов исполняемого файла для прошивок это чаще bin, hex, elf есть ещё win32 pe, a.out, elf и много чего

            • Kingleonide

              Во-во-во

              • Lexx

                почему не может? если не брать в рассчет кишки каждого процессора, то опкод и есть минимальная инструкция

            • Byte

              Не путай формат исполняемого файла, который завязан на ОС, с набором инструкций процессора ;)

              • Kingleonide

                речь идёт про bin/hex

                • Lexx

                  в cisc арзитектурах оно еще в микрокоманды транслируется и вообще

                • Byte

                  HEX (в текстовом, читаемом глазами виде) — для удобства программиста. В итоге всё равно в МК льётся то, что в bin. Грубо говоря ;)

                  • Kingleonide

                    Взять любую программу под МК, имеем листинг из опкодов в виде *.bin файла, есть другая сущность которая прольет в память этот листинг. То есть в памяти у нас будет Во шикарно То что и хотел узнать, а потом процессор уже собственно эти микрокоманды трактует как гласит то архитектура

                    • Lexx

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

                      • Kingleonide

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

                        • Lexx

                          ассемблер это когда ты опкоды руками пишешь, условно

                          • Byte

                            Нет ;)

                            • Lexx

                              нет, но если на пальцах объяснять

                              • Kingleonide

                                И по сути в *.bin/hex у нас хранится листинг опкодов

                                • Sergy

                                  не листинг, а сами они

                    • Byte

                      Да. Ну вон я ссылку выше кидал, всё-таки стоит ознакомиться ;)

                      • Lexx

                        совсем просто если

                    • Sergy

                      > имеем листинг из опкодов в виде *.bin файла неа, там уже чисто машинный код без всяких окодов, опкоды это как раз тоже для людей придумали)

                      • Kingleonide

                        Всё всё, вопросов больше не имею, спасибо всем за ответы!

                      • Kingleonide

                        Не не, опкод - он же код операции, байт По крайней мере я так думаю B8 - опкод

                        • Byte

                          Да. Равно как и 90 — nop, 74 — je и т.д.

                          • Kingleonide

                            Просто с другом речь зашла по поводу того почему Arduino IDE не оптимизирует код и скетч так много весит Сравнивая с например с Avr GCC

                            • Lexx

                              АХАХАХА gcc и ардуино иде

                              • Sergy

                                это уже дрогое)

                            • Byte

                              Потому, что куча кривых библиотек используется ;)

                              • Kingleonide

                                Я понимаю, просто начали разбираться с сущностью компилятора)) там уже почитали что к чему

                                • Lexx

                                  gcc намного сложнее и абстрактнее чем код в опкоды в отличие от

                            • Sergy

                              там просто более толстые библиотеки и больше кода набросано и нету прямого доступа к флагам оптимизации) при том что arduino ide сейчас и так использует avr-gcc)

                              • Kingleonide

                                У кого нету доступа к флагам оптимизации?

                                • Sergy

                                  в arduino ide из коробки)

                                  • Kingleonide

                                    Но если он использует avr-gcc почему нет доступа то?

                                    • Lexx

                                      я сколько кода для ардуины видел - там пин-хуин повсюду

                                      • Sergy

                                        потому что в меню у вас этого нету из коробки)))

                                    • Lexx

                                      а зачем тебе доступ из игрушечного редактора? собирай из консоли как душе угодно

                                      • Kingleonide

                                        Так в том то и проблма))))))))) Сложно разрешить юзеру управлять более тонкими настройками компилятора? Да просто интересно стало, не так же и сложно, в той же этой

                                        • Sergy

                                          сложно объяснить зачем это ему нужно)

                                          • Lexx

                                            какому юзеру? студенту с лабой по миганию светодиода что ли?

                                        • Byte

                                          Ардуинщикам это не нужно. Не влезло в память — берём ардуину с МК пожирнее, всё.

                                          • Kingleonide

                                            Algorithm Builder вроде есть доступ к управлению флагами оптимизации из иде Могу ошибаться*

                                            • Lexx

                                              какой кошмар, боже

                                              • Kingleonide

                                                Я вообще мимокрокодил, просто для общего развития

                                            • Sergy

                                              так это почти asm, просто графический)

                                              • Lexx

                                                моя очередь ебанутых вопросов

                                      • Sergy

                                        проблема инфраструктуры в ардуино ide зашёл в библиотеки, вбил в поиск, нашёл что надо и используешь для чистого avr-gcc разберись с Makefile найди подходящую библиотеку, потом на середине работы пойми что она не работает вообще и надо другое искать разберись с avrdude и куча всего в итоге среднестатистический новичок на 2 или 3 пунке "да ну его это всё нафиг" и всё)

                                        • Lexx

                                          периферию инициализируй, кому оно надо

                                          • Sergy

                                            чё?)

                                            • Lexx

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

                                              • Sergy

                                                так не только ж пины нужны. и не только переферия

                                                • Lexx

                                                  так вот: попытка генерить противофазные импульсы для подавления низкочастотных (относительно) помех в БП через ЦАП/АЦП - это совсем дебилом быть?

                                                  • Maxim

                                                    Это очень... Нетрадиционный подход. И это говорит парень с радугой в нике, а это о многом говорит. Сгенерировать сигнал той же амплитуды, но сдвинутый на 180 градусов в принципе можно, но это какой-то сложный способ выстрелить себе в ногу..

                                                    • Lexx

                                                      я все прекрасно понимаю =) я хочу поиграться с ЦАПами, придумал упражнение

                                                      • Sergy

                                                        тогда делай)

                                                        • Lexx

                                                          потому что все равно гитара фонит как пидараска от обычного БП, а RLC-фильтры это скучно

                                                          • Maxim

                                                            Вопрос в том, сколько такое решение принесет с собой проблем в схему. Я бы предложил в качестве упражнения с цап-ацп традиционную задачу - например построение самодельного следящего привода

                                                            • Lexx

                                                              ты про ультразвуковой локатор?

                                                              • Maxim

                                                                Нет. Я про самую древнюю задачу: когда есть электромотор, на его выходном валу стоит потенциометр и нужно используя отрицательную обратную связь получить следящий привод. Сервопривод. Чтобы он мог занимать некое положение вала и удерживать его

                                                                • Roman

                                                                  следящий за твоим пин хуином это у тебя профдеформация, в любой непонятной ситуации делать сервоприводы

                                                                  • Maxim

                                                                    Регулятор это уже способ коррекции, не обязательно пид использовать) Согласен, но почему бы и нет

                                                                    • Roman

                                                                      лучше нет

                                                                      • Maxim

                                                                        Лучше Da!

                                                                • Lexx

                                                                  еще попытка: это про пид-регуляторы?

                                                                  • Roman

                                                                    бля

                                                                  • Roman

                                                                    это про то, что надо разобраться с питанием твоей балалайки, а не цап царап делать ебать, у меня -31

                              • Lexx

                                а вот это интересно ю_ю

              • Sergy

                человек спрашивает про итоговый результат работы компилятора

      • Sergy

        есть компиляторы, которые могу и asm генерировать

        • Lexx

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

          • Kingleonide

            Ну то есть в виде машинного кода, то есть по сути, абстрактная прошивка должна содержать в себе машинный код, последовательность нолей или едниц

            • Lexx

              курсач пишешь что ли?)

              • Kingleonide

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

                • Byte

                  Именно ТОЛЬКО опкоды он и понимает :)

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

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