Fórum Soma em assembler não funciona... #240798

01/07/2004

0

Tenho a seguinte rotina:

function Sum(var X, Y: real): real;
begin

asm
fld x
fld y
fADD
fstp @Result
end;
end;

no entanto ela não retorna o valor correto. Só funciona sem o var.
Alguém sabe por que???


Ertai

Ertai

Responder

Posts

01/07/2004

Beppe

Quando um parâmetro é var, o endereço para ele é passado, naum o conteúdo. O Delphi mascara um pouco os modos, por isso pode ser complicado pra assimilar.

function Sum(var X, Y: Double): Double;
asm
// a notação xword ptr [mem], é comum para var e não-var
        fld     qword ptr [X]
        fadd    qword ptr [Y]
end;


O problema é que vc não indicou o tipo dados(qword: Double), então (dword: Single) foi assumido, o que gerou o resultado errado.


Responder

Gostei + 0

02/07/2004

Ertai

esse lance de passagem por parametro e por endereço eu já sabia...
já tinha tentado desse modo que vc passou, mas não funciona também...


Responder

Gostei + 0

02/07/2004

Beppe

esse lance de passagem por parametro e por endereço eu já sabia... já tinha tentado desse modo que vc passou, mas não funciona também...

Eu naum costumo testar o que posto :oops: ...mas este sim, funcionou perfeito pra mim...Que versão do Delphi?


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar