Die Anordnung für das Verfahren -(BOOL) f { return true; }
(auf meinem iMac) ist:Disassemblierung für - (BOOL) f {return true; }
test`-[AppDelegate f]:
0x1000014d0 <+0>: pushq %rbp
0x1000014d1 <+1>: movq %rsp, %rbp
0x1000014d4 <+4>: movb $0x1, %al
0x1000014d6 <+6>: movq %rdi, -0x8(%rbp)
0x1000014da <+10>: movq %rsi, -0x10(%rbp)
-> 0x1000014de <+14>: movsbl %al, %eax
0x1000014e1 <+17>: popq %rbp
0x1000014e2 <+18>: retq
(diese zu erzeugen stelle ich einen Haltepunkt auf der return-Anweisung und Debug -> Debug Workflow -> Immer Demontage zeigen).
Ich war überrascht, es ist acht Anweisungen.
pushq %rbp
movq %rsp, %rbp
:
popq %rbp
retq
^Dies scheint Standard-Standardplatte für die Verwaltung des Stapels und Rückkehr.
movb $0x1, %al
movsbl %al, %eax
^Dies lädt hex 00 00 00 01 in EAX, das ist das Register für den Rückgabewert.
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
^aber was diese tun? Sind die obigen 6 Zeilen nicht ausreichend?
EDIT: Ich fand http://www.idryman.org/blog/2014/12/02/writing-64-bit-assembly-on-mac-os-x/ hilfreich.
Nein, OP fragt nach mittleren Anweisungen, nicht nach Prolog und Epilog. Aus der Frage weiß OP das genau. – Kegluneq
Eigentlich habe ich geahnt, was sie machen, aber ich kannte den technischen Namen nicht. Also +1 von mir. –