पर बेकार जेपी/जेएनपी असेंबली निर्देश मैं यह जानने का प्रयास कर रहा हूं कि jp
/jnp
निर्देश एलएलवीएम से उत्पन्न सी कोड में कौन सा उद्देश्य प्रदान करते हैं। नमूना:x86_64
int main(int argc, const char * argv[]) {
double value = 1.5;
if (value == 1.5) {
value = 3.0;
}
return 0;
}
विधानसभा उत्पादन:
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
jne
अगर value != 1.5
जाँच कर रहा है और काम से अधिक कूद, लेकिन क्या jp
इस संदर्भ में कर रहा है?
मुझे लगता है कि आपने llvm को अनुकूलित कोड या कुछ नहीं करने के लिए कहा था। कोई संकलक कभी भी 'xor% eax,% eax' के बजाय' mov $ 0,% eax' को ऑप्टिमाइज़ेशन के किसी भी स्तर के साथ उत्सर्जित नहीं करेगा। उस कोड में अन्य गंदे सामान हैं: 'movabsq $ 3,% rax'' movl $ 3,% eax' की तुलना में 10 बाइट्स है, लेकिन इसका एक समान प्रभाव है। –