LINUX.ORG.RU

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

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

Насколько я знаю, в AMD64 нельзя просто так взять и обратиться по 64-битовому смещению:

    mov    eax, [absolue_64_bit_address]

Точнее написать-то ты такую команду можешь, но ассемблер автоматически переведет ее в адресацию относительно RIP. Что ты и видишь в листинге. Если ты посмотришь, как эта же последовательность байт дизассемблируется другими дизассемблерами (IDA, HIEW), то скорее всего, никакого RIP ты в команде не найдешь - они автоматически преобразуют ее в абсолютное смещение.

Так что все только через мумба-юмбу.

Ну а смысл - например, релоки не нужны.

Исправление bigbit, :

Насколько я знаю, в AMD64 нельзя просто так взять и обратиться по 64-битовому смещению:

    mov    eax, [absolue_64_bit_address]

Точнее написать-то ты такую команду можешь, но ассемблер автоматически переведет ее в адресацию относительно RIP. Что ты и видишь в листинге. Если ты посмотришь, как эта же последовательность байт дизассемблируется другими дизассемблерами (IDA, HIEW), то скорее всего, никакого RIP ты в команде не найдешь - они автоматически преобразуют ее в абсолютное смещение относительно RIP.

Так что все только через мумба-юмбу.

Ну а смысл - например, релоки не нужны.

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

Насколько я знаю, в AMD64 нельзя просто так взять и обратиться по 64-битовому смещению:

    mov    eax, [absolue_address]

Точнее написать-то ты такую команду можешь, но ассемблер автоматически переведет ее в адресацию относительно RIP. Что ты и видишь в листинге. Если ты посмотришь, как эта же последовательность байт дизассемблируется другими дизассемблерами (IDA, HIEW), то скорее всего, никакого RIP ты в команде не найдешь - они автоматически преобразуют ее в абсолютное смещение относительно RIP.

Так что все только через мумба-юмбу.

Ну а смысл - например, релоки не нужны.