美文网首页
setFrame: 汇编参数

setFrame: 汇编参数

作者: 偶是星爷 | 来源:发表于2019-06-24 20:02 被阅读0次

测试代码 1:

void test(CGRect rect)
{
    printf("%f", rect.origin.x);
    printf("%f", rect.origin.y);
    printf("%f", rect.size.width);
    printf("%f", rect.size.height);

}

int main(int argc, char * argv[]) {
    @autoreleasepool {
        
        test((CGRect){1.1,2.1,3.1,4.1});
        
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

反汇编看一下

1

很明显,CGRect的4个值放在d0、d1、d2、d3中。

测试代码 2

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    [self testFrame:(CGRect){1.1,2.1,3.1,4.1}];
}

- (void)testFrame:(CGRect)rect
{
    printf("%f", rect.origin.x);
    printf("%f", rect.origin.y);
    printf("%f", rect.size.width);
    printf("%f", rect.size.height);
}

@end

测试OC的方法,看有没有什么区别


2

OC的方法本质上和C调用方式没有区别,只是rect参数从参数1变成了参数3(前两个参数分别是self和SEL)。可以看到,CGRect的4个值还是放在d0、d1、d2、d3中。

相关文章

  • setFrame: 汇编参数

    测试代码 1: 反汇编看一下 很明显,CGRect的4个值放在d0、d1、d2、d3中。 测试代码 2 测试OC的...

  • 重写UITableViewCell的宽高

    OC时代我们重写tabviewcell的SetFrame -(void)setFrame:(CGRect)fram...

  • 提高代码执行效率的几个小技巧

    前言 目录 一、方法参数限制 二、反汇编 switch case & if else 三、C 中写汇编代码 四、 ...

  • 汇编学习(9), 命令行参数,C与汇编

    本篇介绍 本篇介绍下汇编如何支持命令行函数,以及C如何调用汇编。 命令行参数 看一个访问命令行参数的例子: 命令行...

  • 汇编

    subq[64位汇编传参数](http://abcdxyzk.github.io/blog/2012/11/23/...

  • x64寄存器传参

    64位汇编 当参数少于7个时, 参数从左到右放入寄存器: rdi, rsi, rdx, rcx, r8, r9。 ...

  • 自定义UITableViewCell的frame

    - (void)setFrame:(CGRect)frame { frame.size.height -= 5; ...

  • C语言10- C语言与汇编

    20:C语言与汇编 20.1:调用约定之汇编 x86调用约定: cdecl:参数从右往左依次入栈,调用者栈平衡(C...

  • 汇编

    汇编为 说明%rdi,%rsi,%rdx,%rcx,%r8,%r9 用作存储函数的参数 当参数多于6个时 movq...

  • 函数调用 参数传递

    64位汇编当参数少于7个时, 参数从左到右放入寄存器: rdi, rsi, rdx, rcx, r8, r9。当参...

网友评论

      本文标题:setFrame: 汇编参数

      本文链接:https://www.haomeiwen.com/subject/wkkaqctx.html