LINUX.ORG.RU

[asm][x86_64] red zone для Intel 64. такое есть?

 


0

0

на сайте x86-64.org скачал x86-64 ABI, в котором прочёл, что есть так называемая red zone - область размером в 128 байтов, которая находится за пределами %rsp, которая зарезервированна и которая не должна изменятся обработчиками сигналов и прерываний. Таким образом можно использовать эту область для временных переменных, не подгоняя указатель на стек в прологе и эпилоге.

Листая документацию по Intel, подобного не нашёл (плохо искал?). Может кто знает, предусмотренно ли такое для Intel 64 архитектур?

В попытке предотвратить возгласы, типа «нафига тебе это надо», отвечу: ради спортивного интереса.


оу, а антивири об этой штуке знают?

antony986
()

Есть. Для IA64 она называется scratch area; ее размер — 16 байт.

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

спасибо! интересно. Но это про IA-64, а не про Intel64 (aka EM64T). Intel64 и AMD64 очень похожи, но вот этой фишки не нашёл в первом.

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

А разве Intel 64 — не другое название AMD64? В любом случае, ABI должен быть одним и тем же, соответственно должна быть и Red Zone (по ABI).

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

Боюсь, что Вы не правы.

http://ru.wikipedia.org/wiki/Intel_64

[quote]x86-64 (также x64/AMD64/Intel64/EM64T)[/quote]

[quote]всегда следует помнить, что Intel 64 и IA-64 это совершенно разные, несовместимые друг с другом, микропроцессорные архитектуры. Представители Intel 64 - это Pentium 4 (последние модели), ряд моделей Celeron D, семейство Core 2 и некоторые модели Intel Atom. Представители IA-64 - это семейства Itanium и Itanium 2.[/quote]

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

не понятно немного....Сначала ты говоришь про AMD64 и IA-64, а потом переходишь на тему AMD64 vs. Intel64.

Итак,

да - Intel64 и IA-64 разные вещи.

да - Intel64 и AMD64 одного поля ягоды, но имеют место некоторые различия.

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

> да - Intel64 и IA-64 разные вещи.

Я в первый раз прочитал неправильно, поэтому думал что речь идет о IA-64.

а потом переходишь на тему AMD64 vs. Intel64.

Не vs, а то, что у них одно и то же ABI. По крайней мере, так считает GCC.

The red zone is mandated by the x86-64 ABI, it is a 128-byte area beyond the location of the stack pointer that will not be modified by signal or interrupt handlers and therefore can be used for temporary data without adjusting the stack pointer.

Так как GCC по дефолту собирает бинарники с поддержкой красной зоны, и эти бинарники работают что на AMD, что на Intel, получается, что красная зона есть что у интела, что у амд. Как-то так.

имеют место некоторые различия

Но ABI должен быть одним и тем же. Иначе бинарники не будут работать.

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