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

郑州网站建设技术外包html5网站开发案例视频

郑州网站建设技术外包,html5网站开发案例视频,濮阳公司做网站,沃通 wordpress1、C语言内嵌汇编的作用 #xff08;1#xff09;优化#xff1a;对于特别重要代码进行优化#xff0c;出于性能的考虑#xff1b; #xff08;2#xff09;C语言需要借助汇编指令来实现特殊功能。比如#xff1a;C语言中访问系统寄存器就需要借助CSR指令#xff1b; …1、C语言内嵌汇编的作用 1优化对于特别重要代码进行优化出于性能的考虑 2C语言需要借助汇编指令来实现特殊功能。比如C语言中访问系统寄存器就需要借助CSR指令 2、基础内嵌汇编 2.1、基础内嵌汇编格式 asm asm-qualifiers(AssemblerInstructions)关键字含义asm这是内嵌汇编的关键字表明这是一个GNU扩展asm-qualifiers修饰词比如volatile、inlineAssemblerInstructions要内嵌的汇编语句如果是多条汇编语句指令需要使用\n\t来换行 1基础内嵌汇编指令支持带参数 2gcc编译器不会去解析内嵌汇编指令当做一个字符串处理 2.2、基础内嵌汇编举例 #同时内嵌多条汇编指令 asm( pushl %eax\n\tmovl $0,%eax\n\t popl %eax);# 也可以将多条的内嵌汇编语句拆开写效果一样 asm(movl %eax,%ebx); asm(xorl %ebx,%edx); asm(movl $0,_booga);3、扩展内嵌汇编 3.1、扩展内嵌汇编的格式 3.1.1、格式说明 asm关键字 修饰词(指令部:输出部输入部损坏部GotoLablesgoto修饰时才有该部)关键字含义asm关键字扩展汇编指令的关键字__asm__指令部要内嵌的汇编指令可以是一条或者多条输出部用于描述在指令部中可以被修改的C语言变量以及约束条件输入部用于描述在指令部中只能被读取访问的C语言变量以及约束条件损坏部告诉编译器内嵌汇编可能带来的影响 3.1.2、修饰词 修饰词含义volatile用于关闭gcc优化可参考博客《C语言中volatile关键字详解以及常见的面试问题》inline用于内联gcc会把汇编代码编译成尽可能短的代码goto用于在汇编代码里跳转到C语言的标签处 3.1.3、内嵌汇编操作符号/修饰符 操作符/修饰符含义被修饰的操作数是只写属性被修饰的操作数具有可读可写属性被修饰的操作数只能作为输出这个操作数在输入参数的指令执行完成之后才能写入 输出部通常用“”或者“”修饰符输入部分则不能用“”或者“”约束条件否则编译器会报错因为输入部是用来描述只能读取的C语言变量不能具有写属性 3.1.4、操作数约束符 操作符/修饰符含义p内存地址m内存变量r通用寄存器o内存地址基地址寻址i立即数V内存变量不允许偏移的内存操作数n立即数 3.1.5、损坏部介绍 关键字含义memory告诉编译器内嵌汇编代码改变了内存中的值执行完汇编代码后重新加载该值cc告诉编译器内嵌汇编代码修改了状态寄存器的相关标志位 3.1.6、指令部的参数表示 3.1.6.1 、用前缀% 数字表示变量 asm volatile( add %0, %1, %2 : r(res) : r(i), r(j) );1%0对于r(res)%1对应r(i)%2对应r(j)内嵌汇编的功能把ij的结果写到res中 2r修饰词表示该变量需要使用一个通用寄存器 总结用%数字来引用后面输入部和输出部的参数 3.1.6.2 、用汇编符号来表示变量 asm volatile( add %[result], %[input_i], %[input_j] : [result] r(res) : [input_i] r(i), [input_j] r(j) );在输出部和输入部定义变量时就绑定符号然后在指令部就可以通过符号来引用变量提高代码的可读性 3.1.7、goto修饰词介绍 asm goto(addi %0, %0, -1\nbeqz %0, %1[label]\n:: r(a): memory: label);return 0label:printf(11111\n);1输出部必须是空的。goto是用于跳转功能在满足某个条件下进行跳转没有输出数据的必要 2相较于其他情况goto修饰的情况下多了标签部表明最后要跳转的标签处 3上面内嵌汇编的功能当变量a是1时则跳转到标签label处 3.2、扩展汇编实例分析 //读取csr寄存器的宏 #define read_csr(csr) \ ({ \register unsigned long __v; \__asm__ __volatile__ (csrr %0, #csr \: r (__v) : \: memory); \__v; \ })unsigned long val; val read_csr(mstatus);//将上面的代码按宏定义展开 val ({ register unsigned long __v; \__asm__ __volatile__ (csrr %0, mstatus : r (__v) : : memory);\__v; });3.3、内嵌汇编和宏结合 //用ATOMIC_OP宏定义内嵌汇编的函数摘抄自linux源码 #define ATOMIC_OP(op, asm_op, I, asm_type, c_type, prefix) \ static __always_inline \ void arch_atomic##prefix##_##op(c_type i, atomic##prefix##_t *v) \ { \__asm__ __volatile__ ( \ amo #asm_op . #asm_type zero, %1, %0 \: A (v-counter) \: r (I) \: memory); \ } #define ATOMIC_OPS(op, asm_op, I) \ATOMIC_OP (op, asm_op, I, w, int, ) \ATOMIC_OP (op, asm_op, I, d, s64, 64)ATOMIC_OPS(add, add, i)//将上面的宏展开 static __always_inline void arch_atomic_add(int i, atomic_t *v) {__asm__ __volatile__ ( amoadd.w zero, %1, %0 : A (v-counter) : r (i): memory); }
http://www.yutouwan.com/news/223137/

相关文章:

  • 阳春新农村建设网站国外品牌设计网站
  • 网站内部优化策略wordpress 大不开
  • 崇州网站制作福州营销型网站建设公司
  • 陕西交通建设有限公司网站怎样在百度免费做网站
  • 制作网站的专业公司吗免费产品发布推广
  • 做网站赚钱要多久一件代发48个货源网站
  • 怎样做化妆品公司网站免费推广网站有哪些平台
  • 郝友做的网站wordpress 支付宝赞助
  • 举报网站制度建设方面网络广告策划案例
  • 益阳建设厅网站可编辑wordpress主题
  • 长尾关键词挖掘爱站网君卓展览的售后服务
  • 网站备案名称几个字宁波免费建站外包公司
  • 做网站需要绑定电脑ip吗网站名称跟域名
  • 网站建设怎样避免犯法北京快三开奖走势图一定牛
  • 网站制作外包价格网站首页详细设计
  • 公司网站平台的作用专题页面设计模板
  • 如何利用视频网站做推广山东网站备案
  • wordpress站长统计外贸资讯平台
  • 微信平台APP网站建设怎么样在家做的打字兼职的网站
  • 互联网网站界面设计 要素室内设计说明200字
  • 随州网站建设有哪些新浪网站开发语言
  • dede被挂网站网站木马网站上面的logo怎么做
  • 网页制作成品模板网站wordpress主题超2m
  • 银川做网站设计的公司wordpress 婚礼
  • 南宁自助建站模板软件技术和计算机应用技术哪个好
  • 哪个网站做电商门槛最低网站用的什么字体
  • 图片网站如何优化一站式企业服务平台是什么
  • 大鼠引物在线设计网站网页设计网站
  • 学习网站建设最简单的书沈阳工伤保险做实在哪个网站
  • 姑苏区做网站wordpress模板网站标题重复