■
とりあえずこんな感じだった。
[Codegen] #label ((14)) [Codegen] instruction CompareAndBranch [Codegen] cmpl 0xc(%esp), %eax [Codegen] jg ((24)) [Codegen] #label ((24)) [Codegen] instruction MoveGroup [Codegen] instruction MoveGroup [Codegen] movl %eax, %ecx [Codegen] instruction MulI [Codegen] shll $3, %ecx [Codegen] instruction MoveGroup [Codegen] movl 0x4(%esp), %edx [Codegen] instruction BitOpI [Codegen] orl %ecx, %edx [Codegen] instruction BitOpI [Codegen] andl $0xfffffff8, %edx [Codegen] instruction AsmJSLoadHeap [Codegen] cmpl $0x0, %edx [Codegen] jae ((50)) [Codegen] movsd 0x0(%edx), %xmm0 [Codegen] #label ((58)) [Codegen] instruction MoveGroup [Codegen] movl 0x8(%esp), %ebx [Codegen] instruction BitOpI [Codegen] orl %ecx, %ebx [Codegen] instruction BitOpI [Codegen] andl $0xfffffff8, %ebx [Codegen] instruction AsmJSLoadHeap [Codegen] cmpl $0x0, %ebx [Codegen] jae ((79)) [Codegen] movsd 0x0(%ebx), %xmm1 [Codegen] #label ((87)) [Codegen] instruction MathD [Codegen] mulsd %xmm1, %xmm0 [Codegen] instruction MathD [Codegen] addsd %xmm1, %xmm0 [Codegen] instruction AsmJSStoreHeap [Codegen] cmpl $0x0, %edx [Codegen] jae ((107)) [Codegen] movsd %xmm0, 0x0(%edx) [Codegen] #label ((115)) [Codegen] ##link ((107)) jumps to ((115)) [Codegen] ##setRel32 ((from=007BDFEB)) ((to=007BDFF3)) [Codegen] #label ((115)) [Codegen] instruction AddI [Codegen] addl $0x1, %eax [Codegen] instruction MoveGroup [Codegen] instruction Goto [Codegen] jmp ((123)) [Codegen] ##link ((123)) jumps to ((14))
なんか BitOpI 多すぎでは(orl %ecx,%ebx とか)?あとで調べよう。
いやポインタの足し算か。しかしなんでor?
- js/src のなかで configure --enable-debug
- export IONFLAGS=codegen