LINUX.ORG.RU

x86 intel

 , , ,


1

3

Инструкции enter и leave бессмысленны для С. Кроме Паскаля где еще используются? И как в противном случае это реализуется.


Инструкции enter и leave бессмысленны для С.

В x86 полно бессмысленного барахла, который тянут из-за обратной совместимости. CISC он такой, да.

И как в противном случае это реализуется

Напрямую работают со стеком.

ox55ff ★★★★★
()
Ответ на: комментарий от docpro

Что такое «напрямую»?

Инструкции push, pop. Ну или писать в регистры, управляющие стеком.

Подпрограмма лучше вызывающей знает.

Подпрограмма - это абстракция. Для процессора это просто поток инструкций. Просто в интеле хотели облегчить работу с подпрограммами и ввели эти инструкции. Пользоваться ими не обязательно.

ox55ff ★★★★★
()
Ответ на: комментарий от ox55ff

Эти инструкции ещё и медленнее к тому же.

i-rinat ★★★★★
()
Ответ на: комментарий от ox55ff

Они сделали хардварный стек, унифицированный для данных и переходов. Мой вопос про передачу параметров и организацию локальных переменных.

docpro
() автор топика
Ответ на: комментарий от ox55ff

Инструкции push, pop. Ну или писать в регистры, управляющие стеком.

Ну или как... И не везде и сложно.

docpro
() автор топика
Ответ на: комментарий от docpro

Ну или как... И не везде и сложно.

Я перестал тебя понимать. Что ты хочешь? Процедуры, функции, подпрограммы - это всё для программистов. Процессор предоставляет некоторые инструкции для облегчения построения этих абстракций, но использовать их не обязательно. Ты можешь придумать своё соглашение о передачи и возврате данных в/из функции и не использовать стек вообще.

ox55ff ★★★★★
()

Дай угадаю, в x86-64 abi это всё равно не используется, а это тред тупняка?

anonymous
()
Ответ на: комментарий от anonymous

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

docpro
() автор топика
Ответ на: комментарий от monk

Забавно. Но даже призабавно не работает.

docpro
() автор топика
Ответ на: комментарий от hateyoufeel

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

docpro
() автор топика
Ответ на: комментарий от docpro

получается, С-соглашения вызовов полностью убили архитектурные возможности

тут надо еще вспомнить такой архитектурный хлам как операции с BCD

anonymous
()
Ответ на: комментарий от anonymous

тут надо еще вспомнить такой архитектурный хлам как операции с BCD

На сколько я представляю оно до сих пор во всей коммерции используется, но подозреваю, нынешний софт на самом низком уровне на С, либо переписан под SIMD...

docpro
() автор топика
Ответ на: комментарий от peregrine

Это синтаксис, а ты не понимаешь. Для того что бы ограничить область видимости функции (lexical scoping) не нужно выполнять никакие инструкции.

vlad9486
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.