Форум сайта python.su
88
IskatelФункций в ассемблере нет.
В ассемблере есть функции.
Офлайн
253
IskatelМожно не пользоваться, но, если вы внимательно прочитаете пост, то заметите что я написал что вывод на терминал осуществляется функциями. Поэтому без функций вывод колонок не получится.
Так и на сях можно функциями не пользоваться
Офлайн
253
ShamanЯ всегда думал что есть. Есть инструкция call, она пихает sp и передает управление в друге место. Есть ret с обратными действиями.
Функций в ассемблере нет.
Отредактировано doza_and (Ноя. 4, 2015 08:35:42)
Офлайн
88
doza_andБывает ещё пролог и эпилог. Это механизм вызова подпрограмм, которые в свете функциональной парадигмы я бы постеснялся называть функциями. Так что функций там нет.
Есть инструкция call, она пихает sp и передает управление в друге место. Есть ret с обратными действиями.
Отредактировано Shaman (Ноя. 4, 2015 09:18:24)
Офлайн
253
А что вы стесняетесь.
смотрим wiki:
"Фу́нкция в программировании — фрагмент программного кода (подпрограмма), к которому можно обратиться из другого места программы. В большинстве случаев с функцией связывается идентификатор, но многие языки допускают и безымянные функции. С именем функции неразрывно связан адрес первой инструкции (оператора), входящей в функцию, которой передаётся управление при обращении к функции. После выполнения функции управление возвращается обратно в адрес возврата — точку программы, где данная функция была вызвана."
То что есть в ассемблере не противоречит этому определению. Что вас собственно не устраивает в функциях языка Ассемблер?
Офлайн
88
Пусть эту статью читают писавшие её школьники.
В ассемблере есть только подпрограммы, которые не тождественны функциям. Более того, вызов call не обязательно вызывает именно подпрограмму, а вызов ret не обязательно выходит из таковой. Так же нет общепринятых соглашений по возвращению значений из подпрограмм.
doza_andЯ не могу как-либо относиться к несуществующему.
Что вас собственно не устраивает в функциях языка Ассемблер?
Офлайн
253
ShamanЕсли вы считаете принципиально разными подпрограммы и функции, то безусловно вы правы. Именно функций нет.
В ассемблере есть только подпрограммы, которые не тождественны функциям.
Отредактировано doza_and (Ноя. 4, 2015 22:17:11)
Офлайн
88
doza_andЯ поступил проще: зашел с другой стороны, к другим авторам.
Ваши претензии к низкому уровню содержания вики это претензии к вам. Если вы считаете что там неправильно написано и вы лучше знаете, то поправьте Вики и мне не куда будет ссылаться. А мы посмотрим сколько людей с вашей трактовкой согласится.Я согласен с текущей трактовкой. Главное переходы на новую последовательность команд и возвраты назад.
doza_andЭто не терминологические препирательства, это проблема правильного понимания сути, проблема выбора правильной абстракции (по Макконнеллу), если угодно.
А терминологические препирательства мало кому интересны.
Отредактировано Shaman (Ноя. 5, 2015 06:55:40)
Офлайн
253
ShamanДа и еще раз да!!!. Конечно это вопрос типа выберите что вам ближе:
проблема выбора правильной абстракции
Отредактировано doza_and (Ноя. 5, 2015 20:41:09)
Офлайн
88
doza_andВы упустили из поля зрения один момент: “Вызов функции является, с точки зрения языка программирования, выражением, он может использоваться в других выражениях или в качестве правой части присваивания.”. Идеологически чистая процедура не возвращает ничего, даже None.
А по сути я даже затрудняюсь придумать пример где будет важно какой из взглядов использовать. Как я и отмечал все это это методы передачи управления, ну чуток разные.
var
value : Integer;
function Sum(a, b : Integer) : Integer;
begin
Sum := a + b;
end;
procedure SumG(a, b : Integer);
begin
value := a + b;
end;
procedure SumR(var result : Integer; a, b : Integer);
begin
result := a + b;
end;
Офлайн