18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
.globl objc_msg_lookup
.globl objc_msg_lookup_super
.section .text
objc_msg_lookup:
cmpwi %r3, 0
beq ret_nil
lwz %r5, 0(%r3)
lwz %r5, 32(%r5)
lookup:
lbz %r6, 1(%r4)
lbz %r7, 2(%r4)
lbz %r8, 3(%r4)
slwi %r6, %r6, 2
slwi %r7, %r7, 2
slwi %r8, %r8, 2
lwzx %r5, %r5, %r6
lwzx %r5, %r5, %r7
lwzx %r5, %r5, %r8
cmpwi %r5, 0
beq forward
mr %r3, %r5
blr
forward:
b objc_not_found_handler@plt
objc_msg_lookup_super:
lwz %r5, 0(%r3)
cmpwi %r5, 0
beq ret_nil
lwz %r5, 4(%r3)
lwz %r5, 32(%r5)
b lookup
ret_nil:
|
|
|
|
|
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
.globl objc_msg_lookup
.globl objc_msg_lookup_super
.section .text
objc_msg_lookup:
cmpwi %r3, 0
beq- ret_nil
lwz %r5, 0(%r3)
lwz %r5, 32(%r5)
lookup:
lbz %r6, 1(%r4)
lbz %r7, 2(%r4)
lbz %r8, 3(%r4)
slwi %r6, %r6, 2
slwi %r7, %r7, 2
slwi %r8, %r8, 2
lwzx %r5, %r5, %r6
lwzx %r5, %r5, %r7
lwzx %r5, %r5, %r8
cmpwi %r5, 0
beq- forward
mr %r3, %r5
blr
forward:
b objc_not_found_handler@plt
objc_msg_lookup_super:
lwz %r5, 0(%r3)
cmpwi %r5, 0
beq- ret_nil
lwz %r5, 4(%r3)
lwz %r5, 32(%r5)
b lookup
ret_nil:
|