Objective c 了解-(BOOL)f{return true;}的反汇编

Objective c 了解-(BOOL)f{return true;}的反汇编,objective-c,disassembly,Objective C,Disassembly,方法-(BOOL)f{return true;}(在我的iMac上)的程序集是: ^这似乎是管理堆栈和返回的标准样板 movb $0x1, %al movsbl %al, %eax ^这会将十六进制00 01加载到EAX中,EAX是用于返回值的寄存器 movq %rdi, -0x8(%rbp) movq %rsi, -0x10(%rbp) ^但这些人在干什么?以上6行不是足够了吗 编辑:我觉得很有帮助。这是函数的序言和结束语 在ObjC中,每个方法都有两个隐式参数,self和\u

方法
-(BOOL)f{return true;}
(在我的iMac上)的程序集是:

^这似乎是管理堆栈和返回的标准样板

movb   $0x1, %al
movsbl %al, %eax
^这会将十六进制00 01加载到EAX中,EAX是用于返回值的寄存器

movq   %rdi, -0x8(%rbp)
movq   %rsi, -0x10(%rbp)
^但这些人在干什么?以上6行不是足够了吗


编辑:我觉得很有帮助。

这是函数的序言和结束语


在ObjC中,每个方法都有两个隐式参数,
self
\u cmd
。它们在%rdi和%rsi中传递(这是64位ABI的规则)。它们被保存到堆栈中,以防我们在这个方法的某个地方用另一个函数调用覆盖这些寄存器。如果启用优化,您将看到这些指令被删除(因为我们实际上并不需要保存的值)。

否,OP询问的是中间指令,而不是函数序言和尾声。从问题中,OP清楚地知道这些。实际上我猜到了他们在做什么,但我不知道技术名称。所以+1来自我。
movb   $0x1, %al
movsbl %al, %eax
movq   %rdi, -0x8(%rbp)
movq   %rsi, -0x10(%rbp)