Например TDA7294

Форум РадиоКот • Просмотр темы - Вопрос по функциям в C
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вт дек 30, 2025 15:38:21

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Вопрос по функциям в C
СообщениеДобавлено: Ср окт 05, 2022 17:47:00 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
Всех приветствую. Прошу сильно не пинать новичка за такой вопрос) Вопрос в следующем: допустим есть две функции
1) Функция сложения двух чисел a и b
2) Функция вычитания двух чисел a и b
Я сделал 3-ю функцию, которая может как складывать так и вычитать два числа a и b. В этой функции используются 1-я и 2-я функции.
В итоге если мы зайдем во внутрь третьей функции (в ее реализацию), мы увидим что она состоит из 1-ой и 2-ой функции, но если мы будем заходить дальше, например в первую функцию и т.д. то мы дойдем до команд, верно? Так вот, написание функции начинается с команд, верно? Откуда эти команды берутся, как понимает компилятор (или может правильно сказать микроконтроллер) эти команды? Как образовано первоначало?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по функциям в C
СообщениеДобавлено: Ср окт 05, 2022 18:00:40 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 433
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2557
Рейтинг сообщения: 0
Компилятор операторы языка С транслирует в машинные команды микроконтроллера. На начальном этапе не забивайте себе этим мозги. Пишите на С программу, реализующую требуемые вам алгоритмы. Остальное компилятор сделает.

Всё точно так же как в программах на компьютере, только доступ к железу не через операционную систему, а напрямую возможен.


Последний раз редактировалось VladislavS Ср окт 05, 2022 18:06:56, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по функциям в C
СообщениеДобавлено: Ср окт 05, 2022 18:02:34 
Опытный кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 164
Зарегистрирован: Ср авг 03, 2022 05:22:56
Сообщений: 848
Рейтинг сообщения: 0
Цитата:
Откуда эти команды берутся

Какие команды? Такого понятия в языке Си нет. Есть понятие операторов - арифметических, логических, операторов цикла, условия, перехода и т.п. Все эти операторы прописаны в документации языка. Книжка "Язык программирования Си" авторов Керниган, Ритчи - в помощь!
Далее, написанный нами текст по команде Build начинает анализироваться компилятором: он сканирует построчно каждую букву, каждое написанное слово или цифру, знак, сопоставляя со своими внутренними шаблонами (это называется "синтаксический разбор текста") и постепенно, шаг за шагом преобразует в машинные инструкции, понятные микроконтроллеру, а сопомощник компилятора - линкер - раскладывает блоки инструкций и данных в нужном порядке. Ну а микроконтроллер уже просто исполняет машинные инструкции, не задумываясь, что там было написано.

Цитата:
как понимает <...> микроконтроллер

А вот так:
в ячейке флеш-памяти хранится двоичное число [0000'1000'0100'0100] (или 0x0844 в хекс-виде), представляющее собой инструкцию сложения двух чисел, хранящихся в регистрах АЛУ (арифметико-логического устройства) микроконтроллера. Это число извлекается из флеша, декодируется и исполняется. Каждый бит этого числа устанавливает различные переключатели внутренней логики АЛУ, наподобие того, как работают путевые стрелки на огромной железнодорожной станции.
Машинная инструкция 0x0844 имеет текстовый эквивалент в понятной человеку форме и записывается на языке ассемблера так: add r0, r1. Ну а если брать язык Си, то показанная инструкция будет выполнять то же действие, что и арифметический оператор "+" сложения двух переменных. То есть, компилятор языка Си преобразовал оператор "+" в машинную инструкцию, показанную выше. И поскольку вариантов АРМ-инструкций довольно много, компилятор всегда учитывает не только оператор "+", но и то, что вокруг него стоит и выбирает наиболее подходящий вариант инструкции сложения, основываясь на заложенных в него шаблонах и алгоритмах преобразования.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по функциям в C
СообщениеДобавлено: Ср окт 05, 2022 20:52:59 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -24
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
maksimdag0, про ассемблер почитай немножко!

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y