JurassicParkTrespasser/jp2_pc/Source/Bugs/Complaints.cpp

35 lines
1.8 KiB
C++
Raw Permalink Normal View History

2018-01-01 22:07:24 +00:00
//
// Deficiency: Return convention for small classes is inconsistent with documentation,
// and is inefficient.
//
// The help topic "Argument Passing and Naming Conventions" states:
//
// All arguments are widened to 32 bits when they are passed. Return values are also
// widened to 32 bits and returned in the EAX register, except for 8-byte structures,
// which are returned in the EDX:EAX register pair. Larger structures are returned in
// the EAX register as pointers to hidden return structures. Parameters are pushed onto
// the stack from right to left.
//
// This is incorrect. Class return values always seem to be returned as a pointer to a
// hidden return structure, even when they are 4 bytes in size.
//
// This is very inefficient, especially when trying to code small numerical types like
// fixed point. And the lack of documentation correctness makes it hazardous to try to code
// assembly functions.
//
//
// Feature request: more explicit error messages.
//
// I'm not asking for much. But it would help *IMMENSELY* if when the compiler detects an
// ambiguous call to overloaded functions, it would *PRINT OUT WHICH FUNCTIONS IT'S TALKING ABOUT*,
// in fully qualified prototype form. You just don't know how much time that would save.
// With operator functions, it's *impossible* to search through all of them and find out which
// ones the compiler is talking about. Even with named functions, it's difficult if one has many
// overloaded versions of a function, and one is trying to read the compiler's mind and figure out
// what made it think the call was ambiguous. Please just *SAY* which functions are ambiguous.
//
// You don't even need to print out *all* the ambiguous functions. Any two will do, and will
// let me eliminate ambiguities one at a time.
//