Hallo,
wenn man die Funktion von kupferstecher mit Ausgabe des Assemblers kompiliert kommt doch schon der gleiche passende Assembler-Code raus.
Reicht da nicht ein simples 
inline um dann genau so schnell zu sein?
Unter 64-Bit linux fpc -O3 -al -Xs kompiliert:
Code: Alles auswählen
function rech(i, j: Integer): Integer;
begin
  Result:= i+j;
  Result:= Result - $40;
  if Result <= 0
  then Result:= 0
  else
  if Result > $FF
  then Result:= $FF;
end;
Asmstyle ATT ist das, vermute ich:
Code: Alles auswählen
.Lc1:
# Var $result located in register eax
# Var i located in register edi
# Var j located in register esi
# [ErdoesNumb.pas]
# [44] begin
# [45] Result:= i+j;
	leal	(%edi,%esi),%eax
# Var $result located in register eax
# [46] Result:= Result - $40;
	subl	$64,%eax
# Var $result located in register eax
# [48] if Result <= 0
	testl	%eax,%eax
	jnle	.Lj6
# [49] then Result:= 0
	xorl	%eax,%eax
	ret
.Lj6:
# [51] if Result > $FF
	cmpl	$255,%eax
	jng	.Lj9
# [52] then Result:= $FF;
	movl	$255,%eax
.Lj9:
# [54] end;
	ret
Gruß Horst