Узел для метода -(BOOL) f { return true; }
(на мой компьютер) является:Понимание разборки для - (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
(для создания этого я поставил точку останова на утверждение возвращения и отладки -> Debug Workflow -> Всегда показывать разборку).
Я был удивлен, что это восемь инструкций.
pushq %rbp
movq %rsp, %rbp
:
popq %rbp
retq
^Это, как представляется, стандартный шаблон для управления стеком и возврата.
movb $0x1, %al
movsbl %al, %eax
^это загружает hex 00 00 00 01 в EAX, который является регистром, используемым для возвращаемого значения.
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
^но что они делают? Не достаточны ли эти 6 строк?
EDIT: Я нашел http://www.idryman.org/blog/2014/12/02/writing-64-bit-assembly-on-mac-os-x/ полезной.
Нет, ОП спрашивает о средних инструкциях, а не о прологе и эпилоге. Из этого вопроса OP ясно знает об этом. – Kegluneq
На самом деле я догадывался, что они делают, но я не знал технического названия. Так что +1 от меня. –