| Thread overview | |||||||||
|---|---|---|---|---|---|---|---|---|---|
|
February 20, 2007 DMC Compiler error in __asm section | ||||
|---|---|---|---|---|
| ||||
Hi! I've got code that looks like this:
__asm
{
L4: FCHS;
L5: FADD ST(3),ST(0);
L6: FXCH ST(1);
L15: FSUB ST(0),ST(3);
}
and the DMC (v849) compiler reports the errors:
ad_high.cpp(101) : Error: Illegal type/size of operands for the
fadd instruction
ad_high.cpp(103) : Error: Illegal type/size of operands for the
fsub instruction
This compiles fine with Microsoft C++ Professional 6.0.
Any ideas what's wrong?
Thanks!
-- Glenn Lewis
| ||||
February 28, 2007 Re: DMC Compiler error in __asm section | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Glenn Lewis | Glenn Lewis wrote:
> Hi! I've got code that looks like this:
> __asm
> {
> L4: FCHS;
> L5: FADD ST(3),ST(0);
> L6: FXCH ST(1);
> L15: FSUB ST(0),ST(3);
> }
> and the DMC (v849) compiler reports the errors:
> ad_high.cpp(101) : Error: Illegal type/size of operands for the
> fadd instruction
> ad_high.cpp(103) : Error: Illegal type/size of operands for the
> fsub instruction
> This compiles fine with Microsoft C++ Professional 6.0.
> Any ideas what's wrong?
The ST(0) register value is implied, so just use:
FADD ST(3);
for example.
| |||
March 01, 2007 Re: DMC Compiler error in __asm section | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Walter Bright | OK, so I'm assuming that the ST(0) is implied as well in FSUB, to give me: FSUB ST(3); Thanks. -- Glenn | |||
March 01, 2007 Re: DMC Compiler error in __asm section | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Walter Bright | Unfortunately, I'm still stuck... I'm told that this is compilable by any ANSI Standard C compiler... maybe the company that generated this code is
wrong. Here's what I tried:
ruby -p -e "if ($_ =~ /FSUB/); $_.gsub!(/,ST\(0\)/, ''); end; if ($_ =~ /FADD/); $_.gsub!(/ST\(0\),/, ''); end" ad_close.cpp > tmp.cpp
dmc -c tmp.cpp -o ad_close.obj
tmp.cpp:
L4: FSUB ST(1);
^
tmp.cpp(91) : Warning 13: Illegal type/size of operands for the fsub instruction
L5: FADD dword ptr [ESI+20];
^
tmp.cpp(92) : Warning 13: Illegal type/size of operands for the fsub instruction
L9: FMUL dword ptr [ESI+200];
^
tmp.cpp(96) : Error: Illegal type/size of operands for the fadd instruction
L12: FADD ST(1),ST(0);
^
tmp.cpp(99) : Warning 13: Illegal type/size of operands for the fadd instruction
L13: FSUB dword ptr [ESI+16];
^
tmp.cpp(100) : Error: Illegal type/size of operands for the fadd instruction
L15: FDIV dword ptr [ESI+176];
^
tmp.cpp(102) : Error: Illegal type/size of operands for the fdiv instruction
L19: FCOMI ST(0),ST(2);
^
tmp.cpp(106) : Warning 13: Illegal type/size of operands for the fadd instruction
L20: FCMOVNB ST(0),ST(3);
^
tmp.cpp(107) : Error: Illegal type/size of operands for the fcomi instruction
L23: FADD ST(1);
^
tmp.cpp(110) : Warning 13: Illegal type/size of operands for the fsub instruction
L24: FADD ST(0);
^
tmp.cpp(111) : Warning 13: Illegal type/size of operands for the fadd instruction
L25: FCOMI ST(0),ST(3);
^
tmp.cpp(112) : Warning 13: Illegal type/size of operands for the fadd instruction
L26: FSUB ST(0);
^
tmp.cpp(113) : Error: Illegal type/size of operands for the fcomi instruction
Unfortunately, the compiler spits out the line *after* the error, but you get the general idea. -- Glenn Lewis
| |||
March 01, 2007 Re: DMC Compiler error in __asm section | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Glenn Lewis | Glenn Lewis wrote: > Unfortunately, I'm still stuck... I'm told that this is compilable by any ANSI Standard C compiler... maybe the company that generated this code is > wrong. Whoever told you that was in error, Standard C doesn't specify inline assembler. Try this: > __asm > { > L4: FCHS > L5: FADD ST,ST(3) > L6: FXCH ST(1) > L15: FSUBR ST(3),ST > } | |||
March 02, 2007 Re: DMC Compiler error in __asm section | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Walter Bright | Since I continue to get more and more errors with the __asm section from DMC, and since it compiles fine with MSVC++6.0, is it possible to go and ahead compile this code with MS Visual C++ 6.0 and then link it into my D program? I can't seem to get that to work either. Thanks! -- Glenn Lewis | |||
March 02, 2007 Re: DMC Compiler error in __asm section | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Glenn Lewis | Glenn Lewis wrote:
> Since I continue to get more and more errors with the __asm section
> from DMC, and since it compiles fine with MSVC++6.0, is it possible
> to go and ahead compile this code with MS Visual C++ 6.0 and then
> link it into my D program?
> I can't seem to get that to work either.
The inline asm errors are all fixable, they are probably only one or two things going awry. Easier to address them one by one.
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply