Различия с языками высокого уровня

👁 152 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Вот некоторые подсказки для программистов на языках высокого уровня. В языках высокого уровня конструкции или инструкции языка не зависят от аппаратной части чипа или возможностей ЦПУ. Эти конструкции(инструкции) работают на самых различных процессорах, если имеется компилятор для данного языка и в ней имеется возможность компилировать код для того или иного семейства процессора. Компилятор транслирует конструкции языка высокого уровня в объектный бинарный код для того или иного процессора. Язык высокого уровня призван облегчить процесс написания кода и уменьшить затрачиваемое на это время. Между языками высокого уровня и ассемблером мало схожестей, но могут попасться похожие по действию команды, например, GOTO в языке BASIC схож по функциональности с конструкцией JMP в языке ассемблер, но они разные в плане внутренней организации. Использование одного и того же кода программы для другого процессора будет работать только тогда, если конструкции в этом языке определены для обеих этих процессоров. Если ЦПУ процессора не имеет доступ к 16-битному таймеру, то компилятор языка высокого уровня может симулировать только 8 – битный таймер, который имеется в наличии у данного типа процессора. Если три таймера имеются в наличии у микроконтроллера, а компилятор позволяет использовать только два из них, то оставшийся нельзя будет использовать в дальнейшем и для его использования потребуется использовать либо ассемблерные вставки в код языка высокого уровня либо полностью написать программу на ассемблере.
Таким образом, используя язык высокого уровня вы полностью оказываетесь зависимы от возможностей компилятора для того или иного семейства процессора, но не от возможностей самого процессора. Другой пример к вышеперечисленным – это инструкция «MUL». В ассемблере только целевой процессор определяет можете ли вы использовать данную инструкцию, если вы захотите использовать операцию умножения. А что касается языка высокого уровня, то вам здесь не стоит об этом беспокоиться, он не зависит от возможностей процессора и обычно, вам придется использовать специальную математическую библиотеку, в которой определены все математические операции, если даже такая операция не определена в возможностях самого процессора, но она реализована в самом языке при помощи комбинации операций сложения.

difference-bitween-c-and-asm-langsБиблиотека предлагает умножить также целое(integer), длинное целое (long) даже если у вас микроконтроллер является 8-битной. Но нужно заметить одну существенную вещь – если вы будете использовать такие «грозные» операции языка высокого уровня на микроконтроллерах с меньшим количеством FLASH — памяти семейства ATiny AVR, то вы быстро исчерпаете ее и придется использовать микроконтроллера ATMega или XMega AVR с большей памятью, но опять таки в нем будут не использованы множество встроенных функций, если в вашу задачу не входит их использование. Поэтому, в таких ситуация предпочтительнее использовать язык ассемблер, как компактный и быстрый язык.