Есть код программы написанный от руки. Меня попросили написать её на ассемблере(masm32). Я плохо разбираюсь в этом и не знаю, что нужно сделать чтобы она заработала.
Да там просто всё. Там просто функция, без основной программы, и вычисляет что-то с матрицей 3х3. Кстати, код низкоуровневый, если был как у меня высокоуровневый, то разобраться было легче. А код легче сразу Си перевести, наверно.
Там используется умножения матрицы 3х3 на 3д вектор. Но там же в инты используются, мне непонятно зачем это надо, с real4 и real8 понятно, sdword'ми непонятно. Где это используется? Nx = a11*X+a21*Y+a31*Z Ny = a12*X+a22*Y+a32*Z Nz = a13*X+a23*Y+a33*Z --- Сообщение объединено, 2 ноя 2020 --- Вот что получилось! Код (ASM): Fvector3 struct x real4 ? y real4 ? z real4 ? Fvector3 ends Fmatrix33 struct i Fvector3 <> j Fvector3 <> k Fvector3 <> Fmatrix33 ends Fvector3@dotproduct MACRO res_float:req, vec1:req, vec2:req fld vec1.x fmul vec2.x fld vec1.y fmul vec2.y fadd fld vec1.z fmul vec2.z fadd fstp res_float EXITM <> ENDM ;Nx = a11*X+a21*Y+a31*Z ;Ny = a12*X+a22*Y+a32*Z ;Nz = a13*X+a23*Y+a33*Z Fmatrix33@mul_Fvector3 proc self_matrix:ptr Fmatrix33, vec:ptr Fvector3, vec_result:ptr Fvector3 mov ecx, self_matrix mov edx, vec mov eax, vec_result ASSUME ecx:ptr Fmatrix33, edx:ptr Fvector3, eax:ptr Fvector3 Fvector3@dotproduct([eax].x, [ecx].i, [edx]) Fvector3@dotproduct([eax].y, [ecx].j, [edx]) Fvector3@dotproduct([eax].z, [ecx].k, [edx]) ASSUME ecx:nothing, edx:nothing, eax:nothing ret Fmatrix33@mul_Fvector3 endp Только у меня флоаты а не инты, не понимаю, для чего в этом методе инты?! Хотя можно и инты, если они вам сильно нужны. ЗЫ Да, у меня такой стиль. --- Сообщение объединено, 2 ноя 2020 --- Чорт форматирования табами пропало!!!!!
Intro, Ктоже вручную то математику пишет, смотри скопировал 3 выражения и собрал пб, выхлоп. --- Сообщение объединено, 5 ноя 2020 --- Eugen, Скопируй уравнения, типы даже определять не нужно, добавь end и собери с опцией. На выходе будет асм сурец с математикой и коментами
Там всё просто, мне проще сразу на асме написать. Да и Eugen, просто просил декомпилировать этот код. И ещё, я сейчас в основном на ассемблере программирую, UASM.