VC++ ASSEMBLY:
void baseline(signed n, signed& cr0) {
00401500 push ebp
00401501 mov ebp,esp
cr0 = 4;
00401503 mov eax,dword ptr [cr0]
00401506 mov dword ptr [eax],4
}
0040150C pop ebp
0040150D ret 8
void jalf(signed n, signed& cr0) {
00401540 push ebp
00401541 mov ebp,esp
cr0 = 1 << ((n >= 0) + (n == 0));
00401543 mov eax,dword ptr [n]
00401546 xor ecx,ecx
00401548 test eax,eax
0040154A setns cl
0040154D xor edx,edx
0040154F test eax,eax
00401551 sete dl
00401554 mov eax,1
00401559 add ecx,edx
0040155B shl eax,cl
0040155D mov ecx,dword ptr [cr0]
00401560 mov dword ptr [ecx],eax
}
00401562 pop ebp
00401563 ret 8
GCC ASSEMBLY:
.globl __Z8baselineiRi
.def __Z8baselineiRi; .scl 2; .type 32; .endef
__Z8baselineiRi:
pushl %ebp
movl %esp, %ebp
movl 12(%ebp), %eax
movl $4, (%eax)
popl %ebp
ret
.p2align 4,,15
.globl __Z4jalfiRi
.def __Z4jalfiRi; .scl 2; .type 32; .endef
__Z4jalfiRi:
pushl %ebp
xorl %ecx, %ecx
movl %esp, %ebp
movl 8(%ebp), %eax
movl 12(%ebp), %edx
testl %eax, %eax
notl %eax
sete %cl
shrl $31, %eax
addl %eax, %ecx
movl $1, %eax
sall %cl, %eax
movl %eax, (%edx)
popl %ebp
ret
.p2align 4,,15
VkMrKyBBU1NFTUJMWToKCnZvaWQgYmFzZWxpbmUoc2lnbmVkIG4sIHNpZ25lZCYgY3IwKSB7CjAwNDAxNTAwICBwdXNoICAgICAgICBlYnAgIAowMDQwMTUwMSAgbW92ICAgICAgICAgZWJwLGVzcCAgCgljcjAgPSA0OwowMDQwMTUwMyAgbW92ICAgICAgICAgZWF4LGR3b3JkIHB0ciBbY3IwXSAgCjAwNDAxNTA2ICBtb3YgICAgICAgICBkd29yZCBwdHIgW2VheF0sNCAgCn0KMDA0MDE1MEMgIHBvcCAgICAgICAgIGVicCAgCjAwNDAxNTBEICByZXQgICAgICAgICA4ICAKCnZvaWQgamFsZihzaWduZWQgbiwgc2lnbmVkJiBjcjApIHsKMDA0MDE1NDAgIHB1c2ggICAgICAgIGVicCAgCjAwNDAxNTQxICBtb3YgICAgICAgICBlYnAsZXNwICAKCWNyMCA9IDEgPDwgKChuID49IDApICsgKG4gPT0gMCkpOwowMDQwMTU0MyAgbW92ICAgICAgICAgZWF4LGR3b3JkIHB0ciBbbl0gIAowMDQwMTU0NiAgeG9yICAgICAgICAgZWN4LGVjeCAgCjAwNDAxNTQ4ICB0ZXN0ICAgICAgICBlYXgsZWF4ICAKMDA0MDE1NEEgIHNldG5zICAgICAgIGNsICAKMDA0MDE1NEQgIHhvciAgICAgICAgIGVkeCxlZHggIAowMDQwMTU0RiAgdGVzdCAgICAgICAgZWF4LGVheCAgCjAwNDAxNTUxICBzZXRlICAgICAgICBkbCAgCjAwNDAxNTU0ICBtb3YgICAgICAgICBlYXgsMSAgCjAwNDAxNTU5ICBhZGQgICAgICAgICBlY3gsZWR4ICAKMDA0MDE1NUIgIHNobCAgICAgICAgIGVheCxjbCAgCjAwNDAxNTVEICBtb3YgICAgICAgICBlY3gsZHdvcmQgcHRyIFtjcjBdICAKMDA0MDE1NjAgIG1vdiAgICAgICAgIGR3b3JkIHB0ciBbZWN4XSxlYXggIAp9CjAwNDAxNTYyICBwb3AgICAgICAgICBlYnAgIAowMDQwMTU2MyAgcmV0ICAgICAgICAgOCAgCgoKCkdDQyBBU1NFTUJMWToKCi5nbG9ibCBfX1o4YmFzZWxpbmVpUmkKCS5kZWYJX19aOGJhc2VsaW5laVJpOwkuc2NsCTI7CS50eXBlCTMyOwkuZW5kZWYKX19aOGJhc2VsaW5laVJpOgoJcHVzaGwJJWVicAoJbW92bAklZXNwLCAlZWJwCgltb3ZsCTEyKCVlYnApLCAlZWF4Cgltb3ZsCSQ0LCAoJWVheCkKCXBvcGwJJWVicAoJcmV0CgkucDJhbGlnbiA0LCwxNQoKCi5nbG9ibCBfX1o0amFsZmlSaQoJLmRlZglfX1o0amFsZmlSaTsJLnNjbAkyOwkudHlwZQkzMjsJLmVuZGVmCl9fWjRqYWxmaVJpOgoJcHVzaGwJJWVicAoJeG9ybAklZWN4LCAlZWN4Cgltb3ZsCSVlc3AsICVlYnAKCW1vdmwJOCglZWJwKSwgJWVheAoJbW92bAkxMiglZWJwKSwgJWVkeAoJdGVzdGwJJWVheCwgJWVheAoJbm90bAklZWF4CglzZXRlCSVjbAoJc2hybAkkMzEsICVlYXgKCWFkZGwJJWVheCwgJWVjeAoJbW92bAkkMSwgJWVheAoJc2FsbAklY2wsICVlYXgKCW1vdmwJJWVheCwgKCVlZHgpCglwb3BsCSVlYnAKCXJldAoJLnAyYWxpZ24gNCwsMTUK