40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
movzbl (%eax), %ecx
movl (%edx,%ecx,4), %eax
testl %eax, %eax
jz forward
ret
.type objc_msg_lookup, %function
.size objc_msg_lookup, .-objc_msg_lookup
forward:
call get_eip
.L1:
addl $objc_not_found_handler-.L1, %eax
jmp *%eax
objc_msg_lookup_super:
movl 4(%esp), %edx
cmpl $0, (%edx)
je ret_nil
movl 4(%edx), %edx
movl 32(%edx), %edx
jmp lookup
.type objc_msg_lookup_super, %function
.size objc_msg_lookup_super, .-objc_msg_lookup_super
ret_nil:
call get_eip
.L2:
addl $nil_method-.L2, %eax
ret
nil_method:
movl 4(%esp), %eax
ret
get_eip:
movl (%esp), %eax
ret
#ifdef __linux__
.section .note.GNU-stack, "", %progbits
#endif
|
|
|
>
>
>
>
>
>
>
>
>
>
<
<
<
<
<
<
<
<
<
<
|
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
movzbl (%eax), %ecx
movl (%edx,%ecx,4), %eax
testl %eax, %eax
jz forward
ret
ret_nil:
call get_eip
.L2:
addl $nil_method-.L2, %eax
ret
forward:
call get_eip
.L1:
addl $objc_not_found_handler-.L1, %eax
jmp *%eax
get_eip:
movl (%esp), %eax
ret
.type objc_msg_lookup, %function
.size objc_msg_lookup, .-objc_msg_lookup
objc_msg_lookup_super:
movl 4(%esp), %edx
cmpl $0, (%edx)
je ret_nil
movl 4(%edx), %edx
movl 32(%edx), %edx
jmp lookup
.type objc_msg_lookup_super, %function
.size objc_msg_lookup_super, .-objc_msg_lookup_super
nil_method:
movl 4(%esp), %eax
ret
#ifdef __linux__
.section .note.GNU-stack, "", %progbits
#endif
|