-2 / 8 / 2
Регистрация: 10.11.2008
Сообщений: 776
|
|
1 | |
Выполнение функции на "железе"26.11.2015, 10:50. Показов 1062. Ответов 20
Метки нет Все метки)
(
Как выполняется функция там, внутри? Сначала создается стек из параметров? А дальше?
Если не сложно, можете все в точности описать?)
0
|
26.11.2015, 10:50 | |
Ответы с готовыми решениями:
20
Функции в Протеусе работают а в железе (Atmega128a) нет Остановить выполнение функции внутри другой функции |
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 523
|
|
26.11.2015, 10:55 | 2 |
Я думаю так:
При вызове, функция помещается в стек, там выполняются все действия, ну и собсно return возвращает результат в программу, а ф-ия удаляется из стека. Откройте в дебагере Call stack. Там вы увидите свою main ну и ф-ии, которые программа будет вызывать.
0
|
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
26.11.2015, 11:02 | 3 |
Что за чушь? Функция никуда не помещается, она уже есть в памяти. В стек помещаются только передаваемые параметры и адрес возврата.
1
|
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 523
|
|
26.11.2015, 11:10 | 4 |
Другие тоже так думают ?
Добавлено через 4 минуты что будет, если я начну вызывать ф-ию рекурсивно?
0
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|
26.11.2015, 11:10 | 5 |
"там" ф-ция выполянется примерно так, когда выполнение инструкций доходит до вызова ф-ции, сначала параметры складываются в стек(так же адрес возврата), потом происходит переход по адресу ф-ции, затем в ф-ции параметры достаются из стека, выполяется тело ф-ции, потом при возврате результата, результат помещается в спец регистр, и происзодит возврат по адресу где закончилось выполнение перед началом вызова ф-ции
0
|
-2 / 8 / 2
Регистрация: 10.11.2008
Сообщений: 776
|
|
26.11.2015, 11:15 [ТС] | 6 |
А как проходить весь процесс, с учетом процессора и всего промежуточного, если такое имеется?
0
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|
26.11.2015, 11:19 | 7 |
ну испольняемый файл это набор машинных инструкций, собсно иснтрукции выполяются последовательно, но возможно переходы на другие адреса(не последовательный.переход), и все как то так)
Добавлено через 1 минуту Если так интересно, читайте про работу процессора, и т.д всякие там ассемблеры, машинный код, архитектуры, наборы инструкций для конкретных процессоров, тема то очень обширная, в 2х словах то и не расскажешь, если "совсем нет понимая как "оно" там работает"
0
|
2355 / 1842 / 756
Регистрация: 27.07.2012
Сообщений: 5,456
|
|
26.11.2015, 11:20 | 8 |
Ага. Функция ни в какой стек не помещается. Для "железа" функция - это просто адрес в памяти, на который надо перейти и продолжить выполнение команд с этого адреса. В стек помещаются адрес, куда нужно вернуться после выполнения функции, и аргументы функции. А могут и не в стек, а куда-нибудь в кэш процессора; это уже как компилятор решит.
0
|
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 523
|
|
26.11.2015, 11:21 | 9 |
Да, железо это Ассемблер. Там все ясно видно.
"Записать 1 байт в регист AX....." и т.д. Ооочень занимательно. И вопросов по железу не будет ![]()
0
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|
26.11.2015, 11:23 | 10 |
Добавлено через 40 секунд Железо это далеко не ассемблер ![]()
0
|
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 523
|
|
26.11.2015, 11:29 | 11 |
Прям далеко. Машинный код -> ассемблер. Нет ? Там еще куча промежуточных вариантов?
0
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|
26.11.2015, 11:31 | 12 |
это конечно как минимум, а как же сам железо? FIFO, умножители, сумматоры, конвейеры и подобное, а вообще в основе этого цифровая электроника, ну так если углубиться
0
|
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 523
|
|
26.11.2015, 11:35 | 13 |
Knjagskij, Эй! Псс.. Зыкай скрин. Только Тсс.. Тихо. Если чО ...
Не подводи меня :black_eye.:
0
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|
26.11.2015, 11:36 | 14 |
это стек вызово, и это вывод отладчика
![]() ![]()
1
|
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 523
|
|
26.11.2015, 11:37 | 15 |
Аааа.. Вы про программирование методом подачи потенциалов на выводы ? Ну так бы сразу и сказали
![]()
0
|
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 523
|
|
26.11.2015, 11:43 | 17 |
Рекурсия в действии
![]() Но это просто отладчик. А я думал... Эх
0
|
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 523
|
|
26.11.2015, 11:44 | 18 |
0
|
Ушел с форума
![]() ![]() |
|
26.11.2015, 23:03 | 20 |
Тема трэш. Подписался (с попкорном)...
Хочешь сказать, что в C++ лямбда-функции копируются в стек ? Очень сильно сомневаюсь. Начнем с того, что стековая память не имеет прав на выполнение (execute bit) и первый же call туда сразу закончится access violation. Если только не извращаться с настройками DEP.
1
|
26.11.2015, 23:03 | |
Помогаю со студенческими работами здесь
20
Выполнение функции Долгое выполнение функции
Выполнение функции по условию Одноразовое выполнение функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
![]() |
Новые блоги и статьи
![]() |
||||
Что нового в C# 14
UnmanagedCoder 10.03.2025
Предстоящая версия C# 14 обещает принести изменения, которые сделают разработку еще более приятной и эффективной.
Что стоит отметить, так это влияние сообщества разработчиков на формирование новых. . .
|
Формулы поворота
Igor3D 10.03.2025
Добрый день
Тема
Эти формулы приводятся во множестве тьюториалов, часто под видом "матрица вращения на плоскости".
x' = x * cos(a) - y * sin(a)
y' = y * cos(a) + x * sin(a)
Как бы Вы их. . .
|
Что нового в .NET 10
UnmanagedCoder 10.03.2025
. NET 10 выходит как релиз с длительной поддержкой (LTS), включающей три года обновлений. В этом обновлении Microsoft сфокусировались на нескольких направлениях: производительность, оптимизация. . .
|
Отложенное высвобождение, RCU и Hazard Pointer в C++26
NullReferenced 09.03.2025
Многопоточное программирование стало важной частью современной разработки. Когда несколько потоков одновременно работают с общими данными, возникает целый ряд проблем, связанных с синхронизацией и. . .
|
Неблокирующийся стек на C++26
NullReferenced 09.03.2025
Традиционные способы синхронизации в многопоточном программировании — мьютексы, семафоры, условные переменные — часто превращаются в узкое место в плане производительности. При этом неблокирующиеся. . .
|
Обработка строк в C++26: Новые возможности string и string_view
NullReferenced 09.03.2025
Новый стандарт C++26 предлагает много улучшений для работы с привычными string и относительно новыми string_view.
string_view - это невладеющая ссылка на последовательность символов, появившаяся в. . .
|
Мой первый аддон для Blender 3D, с помощью нейронки (не зная даже азов пайтона, но это не значит что так и с остальным).
Hrethgir 09.03.2025
Потратил весь день. Пол-дня мне хватило, чтобы понять что с версией с 14B мне не одолеть написание функционального кода, на языке с которым я вообще никак не знаком - пайтон. Версия 22B от другого. . .
|
Einstein@Home сегодня исполняется двадцать лет!
Programma_Boinc 09.03.2025
Einstein@Home сегодня исполняется двадцать лет!
Отправлено 19 февраля 2025 года в 17:20:21 UTC
Я хочу поздравить всех наших волонтеров, разработчиков и ученых из Einstein@Home.
Мы официально. . .
|
Заполнители и расширенный набор символов в C++26
NullReferenced 09.03.2025
C++26 представляет два важных обновления: заполнители и расширенный набор символов. Заполнители (placeholders) решают давнюю проблему лаконичности кода в шаблонных выражениях и лямбда-функциях. Они. . .
|
Контракты в C++26
NullReferenced 09.03.2025
Контракты – это механизм, позволяющий указывать предусловия, постусловия и инварианты для функций в коде. Эта функциональность должна была стать частью C++20, но была исключена на встрече комитета. . .
|