LINUX.ORG.RU

История изменений

Исправление proud_anon, (текущая версия) :

Да, блин, оно работает только для меток внутри функции. В этом есть определённая логика.

Тогда можно сделать следующее.

Размер бинарника можно определить после компиляции.

Адрес, куда поместится первый байт бинарника, если не в 0, должен быть известен.

Итак, можно начать бинарник так:

<Перейти на 8 байт вперёд><Размер бинарника - 8 байт><Код>

Тогда, учитывая, что размер инструкции процессора <Перейти на 8 байт вперёд> должен быть заранее известен, можно предсказать адрес, где будет лежать размер бинарника. А сам этот размер записывать туда после компиляции.

Исходная версия proud_anon, :

Да, блин, оно работает только для меток внутри функции. В этом есть определённая логика.

Тогда можно сделать следующее.

Размер бинарника можно определить после компиляции.

Адрес, куда поместится первый байт бинарника, если не в 0, должен быть известен.

Итак, можно начать бинарник так:

<Перейти на 8 байт вперёд><Размер бинарника - 8 байт><Код>

Тогда, учитывая, что размер инструкции процессора <Перейти на 8 байт вперёд> должен быть заранее известен, можно предсказать адрес, где будет лежать размер бинарника.