Skip to content

Instantly share code, notes, and snippets.

@waywardmonkeys
Created August 24, 2012 02:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save waywardmonkeys/3444839 to your computer and use it in GitHub Desktop.
Save waywardmonkeys/3444839 to your computer and use it in GitHub Desktop.
TLS comparison
_KemptyQVKdMM2I:
00000000 pushl %ebp
00000001 movl %esp,%ebp
00000003 pushl %edi
00000004 pushl %esi
00000005 subl $0x10,%esp
00000008 calll 0x0000000d
0000000d popl %edi
0000000e calll _get_teb
00000013 movl 0x15273-0xd(%edi),%ecx
00000019 movl %ecx,0x08(%eax)
0000001c movl 0x18(%ecx),%ecx
0000001f movl %ecx,(%eax)
00000021 movl $0x00000001,0x04(%eax)
00000028 calll _get_teb
0000002d movl (%eax),%eax
0000002f movl 0x08(%ebp),%ecx
00000032 movl %ecx,(%esp)
00000035 call *0x0c(%eax)
00000038 movl %eax,%esi
0000003a calll _get_teb
0000003f movl 0x151b7-0xd(%edi),%ecx
00000045 movl %ecx,0x08(%eax)
00000048 movl 0x18(%ecx),%ecx
0000004b movl %ecx,(%eax)
0000004d movl $0x00000002,0x04(%eax)
00000054 calll _get_teb
00000059 movl (%eax),%eax
0000005b movl %esi,(%esp)
0000005e movl $0x00000001,0x04(%esp)
00000066 call *0x0c(%eax)
00000069 movl %eax,%esi
0000006b calll _get_teb
00000070 movl $0x00000001,0x0c(%eax)
00000077 movl %esi,%eax
00000079 addl $0x10,%esp
0000007c popl %esi
0000007d popl %edi
0000007e popl %ebp
0000007f ret
_KemptyQVKdMM2I:
00000000 pushl %ebp
00000001 movl %esp,%ebp
00000003 pushl %edi
00000004 pushl %esi
00000005 subl $0x10,%esp
00000008 calll 0x0000000d
0000000d popl %edi
0000000e movl _teb+0x00000007(%edi),%eax
00000014 call (%eax)
00000016 movl %eax,%esi
00000018 movl (%esi),%eax
0000001a movl 0x1a2c6-0xd(%edi),%ecx
00000020 movl %ecx,0x08(%eax)
00000023 movl 0x18(%ecx),%ecx
00000026 movl %ecx,(%eax)
00000028 movl $0x00000001,0x04(%eax)
0000002f movl (%esi),%eax
00000031 movl (%eax),%eax
00000033 movl 0x08(%ebp),%ecx
00000036 movl %ecx,(%esp)
00000039 call *0x0c(%eax)
0000003c movl (%esi),%ecx
0000003e movl 0x1a20a-0xd(%edi),%edx
00000044 movl %edx,0x08(%ecx)
00000047 movl 0x18(%edx),%edx
0000004a movl %edx,(%ecx)
0000004c movl $0x00000002,0x04(%ecx)
00000053 movl (%esi),%ecx
00000055 movl (%ecx),%ecx
00000057 movl %eax,(%esp)
0000005a movl $0x00000001,0x04(%esp)
00000062 call *0x0c(%ecx)
00000065 movl (%esi),%ecx
00000067 movl $0x00000001,0x0c(%ecx)
0000006e addl $0x10,%esp
00000071 popl %esi
00000072 popl %edi
00000073 popl %ebp
00000074 ret
00000075 nopl %cs:_KemptyQVKdMM2I(%eax,%eax)
000001b6 <KemptyQVKdMM2I>:
1b6: ff 34 24 pushl (%esp)
1b9: 55 push %ebp
1ba: 89 e5 mov %esp,%ebp
1bc: 83 ec 04 sub $0x4,%esp
1bf: 89 45 fc mov %eax,-0x4(%ebp)
1c2: 8b 45 fc mov -0x4(%ebp),%eax
1c5: bf 00 00 00 00 mov $0x0,%edi
1c6: R_386_32 KsizeVKd
1ca: 8b 1d 18 00 00 00 mov 0x18,%ebx
1cc: R_386_32 KsizeVKd
1d0: ff 53 0c call *0xc(%ebx)
1d3: c7 45 08 01 00 00 00 movl $0x1,0x8(%ebp)
1da: 8b 1d 18 00 00 00 mov 0x18,%ebx
1dc: R_386_32 KEVKd
1e0: bf 00 00 00 00 mov $0x0,%edi
1e1: R_386_32 KEVKd
1e5: c9 leave
1e6: ff 63 0c jmp *0xc(%ebx)
D KemptyQVKdMM2I (D vector_) {
D T2;
D T3_0;
// /Users/bruce/Development/dylan/opendylan/sources/dylan/vector.dylan:102
// /Users/bruce/Development/dylan/opendylan/sources/dylan/vector.dylan:103
CONGRUENT_CALL_PROLOG(&KsizeVKd, 1);
T2 = CONGRUENT_CALL1(vector_);
// /Users/bruce/Development/dylan/opendylan/sources/dylan/vector.dylan:103
CONGRUENT_CALL_PROLOG(&KEVKd, 2);
T3_0 = CONGRUENT_CALL2(T2, (D) 1);
// /Users/bruce/Development/dylan/opendylan/sources/dylan/vector.dylan:102
MV_SET_COUNT(1);
return(T3_0);
}
define inline method empty? (vector :: <vector>) => (b :: <boolean>)
vector.size = 0
end method empty?;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment