Из-за чего может возникать такая ошибка? Я попытался создать процедуру и получил фигу без масла. Вот процедура: Код (Text): Vec4Perpen proc Vector3:D3DVECTOR , Vector1:D3DVECTOR , Vector2:D3DVECTOR fld Vector1.y fmul Vector2.z fstp Vector3.x fld Vector1.z fmul Vector2.y fchs fadd Vector3.x fstp Vector3.x fld Vector1.x fmul Vector2.z fstp Vector3.y fld Vector1.z fmul Vector2.x fchs fadd Vector3.y fstp Vector3.y fld Vector1.y fmul Vector2.x fstp Vector3.z fld Vector1.x fmul Vector2.y fchs fadd Vector3.z fstp Vector3.z ret Vec4Perpen endp Вызываю процедуру с помощью invoke Vec4Perpen,ADDR VectorOut1,ADDR Vector1,ADDR Vector2 Если надо полный исходник попросите и я его выложу.
я так понимаю, что D3DVECTOR - это структура, которая больше, чем 1 дворд. Объяви переменные (параметры к функции) как дворды, а потом используй их типа [Vector3].D3DVECTOR.z. Но тут уже (как адресовать параметры) я возможно не прав, т.к. всегда это делал через регистр, а не напрямую. __________________ Ой, малость ошибся. Напрямую и правда нельзя. Придется сначала поместить параметр в регистр, а потом использовать примерно так: [eax].D3DVECTOR.z
Я объявил переменные как дворды, но ошибка всеравно выводится, разве что без указания переменной error A2111: conflicting parameter definition Может чтото задал неправильно?
исходник пока не смотрел. Причины еще может быть 2: 1) если прототип функции объявлен с другим количеством параметров 2) если глобальные переменные с такими же именами уже где-то объявлены П.С.: после объявления параметров как я сказал, ты переписал процедуру (шоб обращаться через регистры, а не напрямую)?
Передаёшь адрес вектора, а в процедуре используешь как структуру. Код (Text): Vec4Perpen proc Vector3, Vector1, Vector2 mov edx,Vector3 fld [edx].D3DVECTOR.y ...