小编use*_*359的帖子

x86_64上无用的jp/jnp汇编指令

我试图找出LLVM生成的C代码中的目的jp/ jnp指令.样品:

int main(int argc, const char * argv[]) {
    double value = 1.5;

    if (value == 1.5) {
        value = 3.0;
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

装配输出:

Ltmp4:
    movsd   LCPI0_0(%rip), %xmm0
    movl    $0, -4(%rbp)
    movl    %edi, -8(%rbp)
    movq    %rsi, -16(%rbp)
Ltmp5:
    movsd   %xmm0, -24(%rbp)
Ltmp6:
    movsd   -24(%rbp), %xmm1
    ucomisd %xmm0, %xmm1
    jne LBB0_2
    jp  LBB0_2
## BB#1:
    movabsq $3, %rax
    cvtsi2sdq   %rax, %xmm0
Ltmp7:
    movsd   %xmm0, -24(%rbp)
Ltmp8:
LBB0_2:
    movl    $0, %eax
    popq    %rbp
    retq
Run Code Online (Sandbox Code Playgroud)

jne …

c assembly x86-64 llvm instructions

6
推荐指数
1
解决办法
2018
查看次数

Three.js - 单击平面内的 XY 位置

因此,我可以使用光线投射器获取鼠标下的当前对象(本例为平面),但我希望获得平面内鼠标位置的准确 X 和 Y 值。

var vector = new THREE.Vector3( ( event.clientX / window.innerWidth ) * 2 - 1, - ( event.clientY / window.innerHeight ) * 2 + 1,
    0.5 );

projector.unprojectVector( vector, camera );

var raycaster = new THREE.Raycaster( camera.position, vector.sub( camera.position ).normalize() );

var intersects = raycaster.intersectObject(plane, true);

if (intersects.length > 0) {
    console.log(intersects[0].point);
}
Run Code Online (Sandbox Code Playgroud)

如果我的 200x200 平面面向摄像头,则intersects[0].point.x范围如预期从 -100 到 +100。但当我旋转飞机时,我得到的结果好坏参半。

无论飞机在场景中的哪个位置,如何获得 -100 到 +100 的 x 值?

javascript 3d three.js

3
推荐指数
1
解决办法
2427
查看次数

标签 统计

3d ×1

assembly ×1

c ×1

instructions ×1

javascript ×1

llvm ×1

three.js ×1

x86-64 ×1