用内联汇编写的RT核心

 

用内联汇编写的RT核心     __asm  {
用内联汇编写的RT核心
用内联汇编写的RT核心
152  :     ray_dir = ray->dir;
用内联汇编写的RT核心
153  : 
用内联汇编写的RT核心
154  :     dot_nd = - ( normal.x * ray_dir.x + normal.y * ray_dir.y + normal.z * ray_dir.z );
用内联汇编写的RT核心
用内联汇编写的RT核心        xorps        xmm3, xmm3                                ;
用内联汇编写的RT核心        mov            ebx, dword ptr ray                        ;
用内联汇编写的RT核心        mov            edi, dword ptr state                    ;
用内联汇编写的RT核心        mov            esi, dword ptr 
this                        ;
用内联汇编写的RT核心        mov            ecx, dword ptr [ebx]e_Ray.dir.x            ;
用内联汇编写的RT核心        mov            edx, dword ptr [ebx]e_Ray.dir.y            ;
用内联汇编写的RT核心        mov            eax, dword ptr [ebx]e_Ray.dir.z            ;
用内联汇编写的RT核心        movss        xmm0, dword ptr [esi]
this.normal.z        ;
用内联汇编写的RT核心        movss        xmm1, dword ptr [esi]
this.normal.y        ;
用内联汇编写的RT核心        prefetchnta 
byte ptr [esi+TYPE this]                ;
用内联汇编写的RT核心        mov            dword ptr ray_dir.x, ecx                ;
用内联汇编写的RT核心        mov            dword ptr ray_dir.y, edx                ;
用内联汇编写的RT核心        mulss        xmm1, dword ptr ray_dir.y                ;
用内联汇编写的RT核心        mov            dword ptr ray_dir.z, eax                ;
用内联汇编写的RT核心        mulss        xmm0, dword ptr ray_dir.z                ;
用内联汇编写的RT核心        addss        xmm0, xmm1                                ;
用内联汇编写的RT核心        movss        xmm1, dword ptr [esi]
this.normal.x        ;
用内联汇编写的RT核心        mulss        xmm1, dword ptr ray_dir.x                ;
用内联汇编写的RT核心
用内联汇编写的RT核心
156  :     ray_src = ray->src;
用内联汇编写的RT核心
用内联汇编写的RT核心        mov            edx, dword ptr [ebx]e_Ray.src.x            ;
用内联汇编写的RT核心        mov            eax, dword ptr [ebx]e_Ray.src.y            ;
用内联汇编写的RT核心        mov            ecx, dword ptr [ebx]e_Ray.src.z            ;
用内联汇编写的RT核心        addss        xmm0, xmm1                                ;
用内联汇编写的RT核心        movaps        xmm1, xmm3                                ;
用内联汇编写的RT核心        subss        xmm1, xmm0                                ;
用内联汇编写的RT核心 
用内联汇编写的RT核心
158  :     if( dot_nd <= 0.0f )
用内联汇编写的RT核心
用内联汇编写的RT核心        comiss        xmm3, xmm1                                ;
用内联汇编写的RT核心        movss        dword ptr dot_nd, xmm1                    ;
用内联汇编写的RT核心        mov            dword ptr ray_src.x, edx                ;
用内联汇编写的RT核心        mov            dword ptr ray_src.y, eax                ;
用内联汇编写的RT核心        mov            dword ptr ray_src.z, ecx                ;
用内联汇编写的RT核心
用内联汇编写的RT核心
159  :         return false;
用内联汇编写的RT核心
用内联汇编写的RT核心        jae            RETURN_FALSE                            ;
用内联汇编写的RT核心
用内联汇编写的RT核心
161  :     t = ray_src.x * normal.x + ray_src.y * normal.y + ray_src.z * normal.z + normal.w;
用内联汇编写的RT核心
用内联汇编写的RT核心        movss        xmm7, dword ptr [esi]
this.normal.z        ;
用内联汇编写的RT核心        mulss        xmm7, dword ptr ray_src.z                ;
用内联汇编写的RT核心        movss        xmm0, dword ptr [esi]
this.normal.y        ;
用内联汇编写的RT核心        mulss        xmm0, dword ptr ray_src.y                ;
用内联汇编写的RT核心        addss        xmm7, xmm0                                ;
用内联汇编写的RT核心        movss        xmm0, dword ptr [esi]
this.normal.x        ;
用内联汇编写的RT核心        mulss        xmm0, dword ptr ray_src.x                ;
用内联汇编写的RT核心        addss        xmm7, xmm0                                ;
用内联汇编写的RT核心        addss        xmm7, dword ptr [esi]
this.normal.w        ;
用内联汇编写的RT核心
用内联汇编写的RT核心
163  :     t_near = ray->t_near;
用内联汇编写的RT核心
用内联汇编写的RT核心        movss        xmm0, dword ptr [ebx]e_Ray.t_near        ;
用内联汇编写的RT核心
用内联汇编写的RT核心
165  :     if( t <= t_near * dot_nd )
用内联汇编写的RT核心
用内联汇编写的RT核心        mulss        xmm0, xmm1                                ;
用内联汇编写的RT核心        comiss        xmm0, xmm7                                ;
用内联汇编写的RT核心        movss        dword ptr t, xmm7                        ;
用内联汇编写的RT核心
用内联汇编写的RT核心
166  :         return false;
用内联汇编写的RT核心
用内联汇编写的RT核心        jae            RETURN_FALSE                            ;
用内联汇编写的RT核心 
用内联汇编写的RT核心
168  :     t_far = MIN( ray->t_far, state->t );
用内联汇编写的RT核心
用内联汇编写的RT核心        movss        xmm0, dword ptr [edi]e_RayState.t        ;
用内联汇编写的RT核心        comiss        xmm0, dword ptr [ebx]e_Ray.t_far        ;
用内联汇编写的RT核心        jbe            CASE_BELOW                                ;
用内联汇编写的RT核心        movss        xmm0, dword ptr [ebx]e_Ray.t_far        ;
用内联汇编写的RT核心        
//jmp            FAR_TEST                                ;
用内联汇编写的RT核心
CASE_BELOW:
用内联汇编写的RT核心        
//movss        xmm0, dword ptr [edi]e_RayState.t        ;
用内联汇编写的RT核心
//FAR_TEST:
用内联汇编写的RT核心

用内联汇编写的RT核心
169  : 
用内联汇编写的RT核心
170  :     if( t >= t_far * dot_nd )
用内联汇编写的RT核心
用内联汇编写的RT核心        mulss        xmm0, xmm1                                ;
用内联汇编写的RT核心        comiss        xmm7, xmm0                                ;
用内联汇编写的RT核心
用内联汇编写的RT核心
171  :         return false;
用内联汇编写的RT核心
用内联汇编写的RT核心        jae            RETURN_FALSE                            ;
用内联汇编写的RT核心
用内联汇编写的RT核心
177  :     hit.arr[ projX ] = ray_src.arr[ projX ] * dot_nd + ray_dir.arr[ projX ] * t;
用内联汇编写的RT核心
用内联汇编写的RT核心        movzx        eax, 
byte ptr [esi]this.projX            ;
用内联汇编写的RT核心        add            eax, eax                                ;
用内联汇编写的RT核心        add            eax, eax                                ;
用内联汇编写的RT核心        movss        xmm0, dword ptr [ray_dir
+eax]            ;
用内联汇编写的RT核心        movss        xmm2, dword ptr [ray_src
+eax]            ;
用内联汇编写的RT核心        mulss        xmm0, xmm7                                ;
用内联汇编写的RT核心        mulss        xmm2, xmm1                                ;
用内联汇编写的RT核心        addss        xmm0, xmm2                                ;
用内联汇编写的RT核心        movss        dword ptr [hit
+eax], xmm0                ;
用内联汇编写的RT核心
用内联汇编写的RT核心
178  :     hit.arr[ projY ] = ray_src.arr[ projY ] * dot_nd + ray_dir.arr[ projY ] * t;
用内联汇编写的RT核心
用内联汇编写的RT核心        movzx        ecx, 
byte ptr [esi]this.projY            ;
用内联汇编写的RT核心        add            ecx, ecx                                ;
用内联汇编写的RT核心        add            ecx, ecx                                ;
用内联汇编写的RT核心
用内联汇编写的RT核心
182  :     if( inited != TRUE )
用内联汇编写的RT核心
用内联汇编写的RT核心        
//cmp            byte ptr [esi]this.inited, 1            ;
用内联汇编写的RT核心
        movss        xmm0, dword ptr [ray_dir+ecx]            ;
用内联汇编写的RT核心        movss        xmm2, dword ptr [ray_src
+ecx]            ;
用内联汇编写的RT核心        mulss        xmm0, xmm7                                ;
用内联汇编写的RT核心        mulss        xmm2, xmm1                                ;
用内联汇编写的RT核心        addss        xmm0, xmm2                                ;
用内联汇编写的RT核心        movss        dword ptr [hit
+ecx], xmm0                ;
用内联汇编写的RT核心        
//je            BARY_TEST                                ;
用内联汇编写的RT核心

用内联汇编写的RT核心
183  :         prepare_intersect();
用内联汇编写的RT核心
用内联汇编写的RT核心        
//call        prepare_intersect                        ;
用内联汇编写的RT核心
用内联汇编写的RT核心
//BARY_TEST:
用内联汇编写的RT核心

用内联汇编写的RT核心
187  :     bary.x = hit.arr[ projX ] * la.x + hit.arr[ projY ] * la.y + la.z * dot_nd;
用内联汇编写的RT核心
用内联汇编写的RT核心        movss        xmm6, dword ptr [esi]
this.la.y            ;
用内联汇编写的RT核心        mulss        xmm6, dword ptr [hit
+ecx]                ;
用内联汇编写的RT核心        movss        xmm0, dword ptr [esi]
this.la.z            ;
用内联汇编写的RT核心        lea            ecx, dword ptr [hit
+ecx]                ;
用内联汇编写的RT核心        mulss        xmm0, xmm1                                ;
用内联汇编写的RT核心        addss        xmm6, xmm0                                ;
用内联汇编写的RT核心        movss        xmm0, dword ptr [esi]
this.la.x            ;
用内联汇编写的RT核心        mulss        xmm0, dword ptr [hit
+eax]                ;
用内联汇编写的RT核心        lea            eax, dword ptr [hit
+eax]                ;
用内联汇编写的RT核心        addss        xmm6, xmm0                                ;
用内联汇编写的RT核心 
用内联汇编写的RT核心
189  :     if( bary.x < 0.0f || bary.x > dot_nd )
用内联汇编写的RT核心
用内联汇编写的RT核心        comiss        xmm3, xmm6                                ;
用内联汇编写的RT核心        ja            RETURN_FALSE                            ;
用内联汇编写的RT核心        comiss        xmm6, xmm1                                ;
用内联汇编写的RT核心        ja            RETURN_FALSE                            ;
用内联汇编写的RT核心 
用内联汇编写的RT核心
192  :     bary.y = hit.arr[ projX ] * lb.x + hit.arr[ projY ] * lb.y + lb.z * dot_nd;
用内联汇编写的RT核心
用内联汇编写的RT核心        movss        xmm5, dword ptr [esi]
this.lb.y            ;
用内联汇编写的RT核心        mulss        xmm5, dword ptr [ecx]                    ;
用内联汇编写的RT核心        movss        xmm0, dword ptr [esi]
this.lb.z            ;
用内联汇编写的RT核心        mulss        xmm0, xmm1                                ;
用内联汇编写的RT核心        addss        xmm5, xmm0                                ;
用内联汇编写的RT核心        movss        xmm0, dword ptr [esi]
this.lb.x            ;
用内联汇编写的RT核心        mulss        xmm0, dword ptr [eax]                    ;
用内联汇编写的RT核心        addss        xmm5, xmm0                                ;
用内联汇编写的RT核心 
用内联汇编写的RT核心
194  :     if( bary.y < 0.0f || bary.y > dot_nd )
用内联汇编写的RT核心
用内联汇编写的RT核心        comiss        xmm3, xmm5                                ;
用内联汇编写的RT核心        ja            RETURN_FALSE                            ;
用内联汇编写的RT核心        comiss        xmm5, xmm1                                ;
用内联汇编写的RT核心        ja            RETURN_FALSE                            ;
用内联汇编写的RT核心
用内联汇编写的RT核心
197  :     bary.z = dot_nd - bary.x - bary.y;
用内联汇编写的RT核心
用内联汇编写的RT核心        movaps        xmm4, xmm1                                ;
用内联汇编写的RT核心        subss        xmm4, xmm6                                ;
用内联汇编写的RT核心        subss        xmm4, xmm5                                ;
用内联汇编写的RT核心 
用内联汇编写的RT核心
199  :     if( bary.z < 0.0f || bary.z > dot_nd )
用内联汇编写的RT核心
用内联汇编写的RT核心        comiss        xmm3, xmm4                                ;
用内联汇编写的RT核心        ja            RETURN_FALSE                            ;
用内联汇编写的RT核心        comiss        xmm4, xmm1                                ;
用内联汇编写的RT核心        ja            RETURN_FALSE                            ;
用内联汇编写的RT核心
用内联汇编写的RT核心        movss        dword ptr bary.x, xmm6                    ;
用内联汇编写的RT核心        movss        dword ptr bary.y, xmm5                    ;
用内联汇编写的RT核心        movss        dword ptr bary.z, xmm4                    ;
用内联汇编写的RT核心
用内联汇编写的RT核心    }
     //     __asm

你可能感兴趣的:(汇编)