LINUX.ORG.RU

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

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

Можно использовать call, она одинаковая на обеих архитектурах, нужно только помнить, что относительная и шагает в пределах 2 GiB.

Это не совсем так. Есть инструкция call, которая может вызывать функцию, адрес которой в 64-битном регистре, без всяких там относительных смещений

int call64()
{
  (*(void(*)())0xFFFFFFFFFFFFFFFFull)();
  return 0;
}

call64():
	subq	$8, %rsp
	movq	$-1, %rax
	call	*%rax
	xorl	%eax, %eax
	addq	$8, %rsp
	ret

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

Можно использовать call, она одинаковая на обеих архитектурах, нужно только помнить, что относительная и шагает в пределах 2 GiB.

Это не совсем так. Есть инструкция call, которая может вызывать фнукцию, адрес которой в 64-битном регистре, без всяких там относительных смещений