История изменений
Исправление proud_anon, (текущая версия) :
Да, блин, оно работает только для меток внутри функции. В этом есть определённая логика.
Тогда можно сделать следующее.
Размер бинарника можно определить после компиляции.
Адрес, куда поместится первый байт бинарника, если не в 0, должен быть известен.
Итак, можно начать бинарник так:
<Перейти на 8 байт вперёд><Размер бинарника - 8 байт><Код>
Тогда, учитывая, что размер инструкции процессора <Перейти на 8 байт вперёд> должен быть заранее известен, можно предсказать адрес, где будет лежать размер бинарника. А сам этот размер записывать туда после компиляции.
Исходная версия proud_anon, :
Да, блин, оно работает только для меток внутри функции. В этом есть определённая логика.
Тогда можно сделать следующее.
Размер бинарника можно определить после компиляции.
Адрес, куда поместится первый байт бинарника, если не в 0, должен быть известен.
Итак, можно начать бинарник так:
<Перейти на 8 байт вперёд><Размер бинарника - 8 байт><Код>
Тогда, учитывая, что размер инструкции процессора <Перейти на 8 байт вперёд> должен быть заранее известен, можно предсказать адрес, где будет лежать размер бинарника.