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