当前位置: 首页 > news >正文

太原微商网站建设免费大数据平台

太原微商网站建设,免费大数据平台,南阳疫情最新情况今天,培训机构网站制作1,看一下asmlinkage的定义 CPP_ASMLINKAGE __attribute__((regparm(0))) GCC中使用__attribute__((regparm(n)))指定最多可以使用n个寄存器(eax, edx, ecx)传递参数,n的范围是0~3,超过n时则将参数压入栈中(…

1,看一下asmlinkage的定义

CPP_ASMLINKAGE __attribute__((regparm(0)))

GCC中使用__attribute__((regparm(n)))指定最多可以使用n个寄存器(eax, edx, ecx)传递参数,n的范围是0~3,超过n时则将参数压入栈中(n=0表示不用寄存器传递参数)。

补充:C语言调用函数参数使用栈传递,有的说使用寄存器传递,上面的asmlinkage关键字主要用于这个作用,那么linux下有几个是使用栈传递,几个使用寄存器传递的呢。

#include <stdio.h>int fun(int a, int b, int c, int d, int e, int f, int g,int h)
{return a+b+c+d+e+f+g;
}int main() {int a = fun(1,2,3,4,5,6,7,8);return 0;
}

汇编查看

lark@ubuntu:~/test$ sudo gcc example.c  -o example -g
lark@ubuntu:~/test$ objdump -d example

0000000000001129 <fun>:
    1129:    f3 0f 1e fa              endbr64 
    112d:    55                       push   %rbp
    112e:    48 89 e5                 mov    %rsp,%rbp
    1131:    89 7d fc                 mov    %edi,-0x4(%rbp)
    1134:    89 75 f8                 mov    %esi,-0x8(%rbp)
    1137:    89 55 f4                 mov    %edx,-0xc(%rbp)
    113a:    89 4d f0                 mov    %ecx,-0x10(%rbp)
    113d:    44 89 45 ec              mov    %r8d,-0x14(%rbp)
    1141:    44 89 4d e8              mov    %r9d,-0x18(%rbp)
    1145:    8b 55 fc                 mov    -0x4(%rbp),%edx
    1148:    8b 45 f8                 mov    -0x8(%rbp),%eax
    114b:    01 c2                    add    %eax,%edx
    114d:    8b 45 f4                 mov    -0xc(%rbp),%eax
    1150:    01 c2                    add    %eax,%edx
    1152:    8b 45 f0                 mov    -0x10(%rbp),%eax
    1155:    01 c2                    add    %eax,%edx
    1157:    8b 45 ec                 mov    -0x14(%rbp),%eax
    115a:    01 c2                    add    %eax,%edx
    115c:    8b 45 e8                 mov    -0x18(%rbp),%eax
    115f:    01 c2                    add    %eax,%edx
    1161:    8b 45 10                 mov    0x10(%rbp),%eax
    1164:    01 d0                    add    %edx,%eax
    1166:    5d                       pop    %rbp
    1167:    c3                       retq   

0000000000001168 <main>:
    1168:    f3 0f 1e fa              endbr64 
    116c:    55                       push   %rbp
    116d:    48 89 e5                 mov    %rsp,%rbp
    1170:    48 83 ec 10              sub    $0x10,%rsp
    1174:    6a 08                    pushq  $0x8
    1176:    6a 07                    pushq  $0x7
    1178:    41 b9 06 00 00 00        mov    $0x6,%r9d
    117e:    41 b8 05 00 00 00        mov    $0x5,%r8d
    1184:    b9 04 00 00 00           mov    $0x4,%ecx
    1189:    ba 03 00 00 00           mov    $0x3,%edx
    118e:    be 02 00 00 00           mov    $0x2,%esi
    1193:    bf 01 00 00 00           mov    $0x1,%edi
    1198:    e8 8c ff ff ff           callq  1129 <fun>
    119d:    48 83 c4 10              add    $0x10,%rsp
    11a1:    89 45 fc                 mov    %eax,-0x4(%rbp)
    11a4:    b8 00 00 00 00           mov    $0x0,%eax
    11a9:    c9                       leaveq 
    11aa:    c3                       retq   
    11ab:    0f 1f 44 00 00           nopl   0x0(%rax,%rax,1)

我们可以看到edi,esi,edx,ecx,r8d,r9d这几个寄存器 访问,另外的两个为pushq(栈访问)。

 2,asmlinkage举例 

http://www.dinnco.com/news/54058.html

相关文章:

  • wordpress代码发布文章福州短视频seo方法
  • 网站建设业务渠道郑州网站运营实力乐云seo
  • 个性化的个人网站简易软文营销实施背景
  • 万维网网站服务的名称做网站的公司哪家最好
  • wordpress文章怎么输出深圳专业seo
  • 网站没有内容可以备案吗湖南百度推广
  • 做网站然后卖市场营销活动策划方案
  • 青县住房和城乡建设局网站惠州seo网站推广
  • 网站建设 客户评价企业网站策划
  • 自己怎么建网站卖东西本地网络seo公司
  • 株洲新闻网红网株洲站杭州seo推广公司
  • 石景山区城乡建设委员会网站百度人工电话
  • 北京城建建设工程有限公司seo搜索引擎专员
  • php学多久可以做网站如何建立一个自己的网站啊
  • 怎么免费建设自己网站网站制作郑州
  • wordpress slider使用seo排名点击器
  • 怎么注册企业网站域名咨询网络服务商
  • 淘宝上做的网站可以优化吗淘宝关键词推广
  • 广告联盟建设个人网站百度链接提交
  • 计算机哪方面技术吃香电脑系统优化软件排行榜
  • 网站建设难点分析天津百度网站快速排名
  • 山西省住房和城乡建设厅网站自媒体平台注册官网下载
  • 虚拟主机解压wordpressseo网站优化论文
  • 杭州 做网站广告文案经典范例200字
  • 网站建设的客户需求调查与分析黑帽seo寄生虫
  • 最容易做的网站类型seo和sem的联系
  • 作文网站投稿重庆seo主管
  • 网上做网站赚钱吗目前引流最好的app
  • 给一个网站风格做定义武汉排名seo公司
  • 新的网站建设技术怎么建公司网站