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

英文网站怎么做301跳转株洲seo优化推荐

英文网站怎么做301跳转,株洲seo优化推荐,苹果正秘密开发搜索引擎,建筑设计公司资质等级前言 在持续输出ing 一、条件码 1.处理器状态(x86-64,部分的) 当前程序的执行信息 ◼ 临时数据 ◼ 运行时栈的位置(栈顶) ◼ 当前代码控制点的位置(即将要执行的指令地址) ◼ 最近一次指令执…

前言

在持续输出ing

一、条件码

1.处理器状态(x86-64,部分的)

  • 当前程序的执行信息
    ◼ 临时数据
    ◼ 运行时栈的位置(栈顶)
    ◼ 当前代码控制点的位置(即将要执行的指令地址)
    ◼ 最近一次指令执行的状态
    在这里插入图片描述

2.条件码(隐式设置)

  • 简单的位寄存器
    条件码(隐式设置)
    CF 进位标志(无符号数)
    SF 符号标志(有符号数)
    ZF 零标志
    OF 溢出标志(有符号数)
  • 通过算术运算可以隐式设置条件码(可以把它看做是运算的副作用)
    ◼ 例如: addq Src,Dest ↔ t = a+b
    ◼ CF 被置位,如果运算时出现了超出最高位的进位(无符号数运算溢出)
    ◼ ZF 被置位,如果 t ==0
    ◼ SF 被置位,如果 t<0 (看做是有符号数)
    ◼ OF 被置位,如果有符号数运算出现了溢出
    (a>0 && b>0 && t<0) || (a<0 && b<0 && t>=0)

3.条件码(显式设置:比较指令)

  • 通过比较指令可以显式设置条件码
    Explicit Setting by Compare Instruction
  • cmpq Src2, Src1
  • cmpq b,a 这条指令和a-b的作用类似,但不需要将结果写入目标寄存器
    ◼ CF 被置位,如果运算时出现了超出最高位的借位(用于无符号数比较)
    ◼ ZF 被置位,如果 a == b
    ◼ SF 被置位,如果 (a-b) < 0 (看做是有符号数)
    ◼ OF 被置位,如果有符号数运算出现了溢出
    (a>0 && b<0 && (a-b)<0) || (a<0 && b>0 && (a-b)>0)

3.条件码(显式设置:测试指令)

  • 通过测试指令也可以显式设置条件码
  • testq Src2, Src1
    ◼ testq b,a 这条指令和a&b的作用类似,但不需要将结果写入目标寄存器
    ◼ 根据 Src1&Src2 的结果设置条件码
    ◼ 用于对一个操作数的某几个位进行掩码检测
    ◼ ZF 被置位,当 a&b == 0
    ◼ SF 被置位,如果 (a&b) < 0

4.读取条件码

  • SetX指令
    ◼ 根据条件码表达式将目标寄存器的最后一个字节修改为0或1
    ◼ 不会影响目标寄存器最高7个字节的值在这里插入图片描述

5.x86-64 各寄存器中最后一个字节的名称

在这里插入图片描述

6.读取条件码

  • 在x86-64指令集中,32位操作指令 会将目标寄存器的高32位清0
    在这里插入图片描述

二、条件分支

1.跳转

  • jX指令
    ◼根据条件码跳转到代码的其他位置执行
    在这里插入图片描述
    在这里插入图片描述
    这是机器指令与汇编代码的对应
    在这里插入图片描述
  • 生成汇编代码

gcc –Og -S –fno-if-conversion control.c

2.使用goto语句等价表示

  • 语言允许使用goto语句
    ◼ 跳转至标签所在位置的语句继续执行
    在这里插入图片描述
    在这里插入图片描述

3.条件表达式的翻译(使用分支)

  • 为Then和Else表达式创建独立的代码块
  • 根据条件选择合适的一个代码块并执行
    -
    在这里插入图片描述

在这里插入图片描述

4. 使用条件数据移动指令

  • 条件数据移动指令
    ◼ 指令的功能:if (Test) Dest Src
    ◼ 1995年后的x86处理器开始支持
    • GCC在编译时会尝试使用这个指令翻译条件分支
      ◼ 仅当保证逻辑安全的时候使用
  • 为什么使用条件数据移动指令?
    ◼ 分支会破坏流水线的指令流,影像处理器性能
    ◼ 条件数据移动指令不需要改变控制流
    在这里插入图片描述

在这里插入图片描述

5.流水线

  • 最多可以有三条指令同时执行
    在这里插入图片描述

在这里插入图片描述


下面是例子
这是C代码
在这里插入图片描述
这是寄存器存储的值
在这里插入图片描述
在这里插入图片描述

6.不能使用条件数据移动指令的情况

  • 大量的计算
    ◼ 条件数据移动指令会将所有的结果提前计算出来
    ◼ 只有计算都非常简单的时候,使用条件数据移动指令才会有意义
    在这里插入图片描述

  • 存在风险的计算
    ◼ 可能导致程序出错
    在这里插入图片描述

  • 有副作用的计算
    在这里插入图片描述

三、循环

1.Do-While循环

  • 计算x编码中“1” 的个数
  • 使用条件分支决定继续或退出循环
    C代码
    在这里插入图片描述
    goto版本
    在这里插入图片描述
    翻译后
    汇编为
    在这里插入图片描述

寄存器里的值为
在这里插入图片描述

Do-While循环通用的翻译方式

  • C代码
    在这里插入图片描述

  • Goto

  • 先执行 如果满足条件继续循环
    在这里插入图片描述

2.while循环

While循环通用的翻译方式(1)

  • “跳转到中间”翻译方法
  • 使用 –Og 编译优化选
    C代码
    在这里插入图片描述
    可以看到下面汇编代码里面执行到最后
    如果满足条件那么就跳转到中间
    与 do-while 循环相比,循环开始
    前先跳转至循环条件检测的位置
    (注意第一行 gototest!!!)

在这里插入图片描述

While循环通用的翻译方式(2)

dowhile法
在这里插入图片描述
先翻译成dowhile
在这里插入图片描述

再依据dowhile的版本翻译Goto版本
在这里插入图片描述

3.for循环

for循环的通用翻译方式

“For” Loop → While Loop → Goto
在这里插入图片描述
while
在这里插入图片描述
dowhile
在这里插入图片描述
goto
在这里插入图片描述

四、switch语句

会考的
以下面的switch语句为例在这里插入图片描述
我们可以看到

  • 多个case (5 & 6)共用同一语句块
  • Case2贯穿
  • Case4缺失(case值不连续)

1.跳转表

  • 用作switch语句翻译的一个表
  • switch语句的通用翻译如下
    在这里插入图片描述
    注意这个goto 语句 后面接的是跳转表
    在这里插入图片描述

1.跳转表的结构

  • 基地址是 .L4
  • 每个跳转目标需要8个字节(指向目标语句块的地址)
    在这里插入图片描述

在这里插入图片描述

  • 这是跳转表里跳转目标对应的语句块
    在这里插入图片描述

2.直接跳转

  • jmp .L8
    直接跳转至.L8标签所指向地址的指令

3.间接跳转

  • jmp *.L4(,%rdi,8)
    • 跳转表起始地址.L4(跟那个存储器寻址可以类比一下)
    • 缩放因子必须是8的整倍数(每个地址是8个字节)
    • 从地址 .L4 + x*8 处获得跳转目标的位置
      • 仅限于 0 ≤ x ≤ 6的情况

4.分析跳转表(例子分析)

给一段switch语句
在这里插入图片描述
汇编代码为

在这里插入图片描述
跳转表如下
在这里插入图片描述

  • 跳转表与switch语句对应关系如图在这里插入图片描述
(1)正常情况 x==1

在这里插入图片描述
对应的汇编代码以及寄存器的值对应如下图
在这里插入图片描述
在这里插入图片描述

(2)代码块贯穿 x= =2 x= =3(无break)

对应C代码应该为在这里插入图片描述
汇编代码为(可以看到执行完case2就执行case3里面的代码 w+=z)在这里插入图片描述

在这里插入图片描述

(3)缺省 x= =5 x= =6(共用一个代码块)

在这里插入图片描述

汇编代码也是共用一块
在这里插入图片描述
在这里插入图片描述

(4)没有从0开始的情况

在这里插入图片描述
汇编代码还是会处理成从0开始
在这里插入图片描述

(5)稀疏的switch语句

在这里插入图片描述

  • 将翻译为二分查找的语句 O(log n)
  • 而不是退化为 if-elseif-elseif-else O(n)
    在这里插入图片描述

文章转载自:
http://mho.c7510.cn
http://levelling.c7510.cn
http://prealtar.c7510.cn
http://dwindle.c7510.cn
http://amend.c7510.cn
http://piney.c7510.cn
http://segu.c7510.cn
http://bastardization.c7510.cn
http://komati.c7510.cn
http://aldis.c7510.cn
http://expatiate.c7510.cn
http://septiform.c7510.cn
http://titrate.c7510.cn
http://plenipotent.c7510.cn
http://oratrix.c7510.cn
http://jointer.c7510.cn
http://dorp.c7510.cn
http://palpitate.c7510.cn
http://bacciferous.c7510.cn
http://astrochronology.c7510.cn
http://galoisian.c7510.cn
http://awe.c7510.cn
http://alarmist.c7510.cn
http://manful.c7510.cn
http://comb.c7510.cn
http://arisings.c7510.cn
http://boot.c7510.cn
http://overinflated.c7510.cn
http://narcomaniac.c7510.cn
http://industrialise.c7510.cn
http://zythum.c7510.cn
http://gunnybag.c7510.cn
http://monocephalous.c7510.cn
http://distend.c7510.cn
http://churchianity.c7510.cn
http://isogeneic.c7510.cn
http://textbox.c7510.cn
http://paramaribo.c7510.cn
http://intacta.c7510.cn
http://inceptive.c7510.cn
http://shalom.c7510.cn
http://attaboy.c7510.cn
http://revehent.c7510.cn
http://miniver.c7510.cn
http://teleswitch.c7510.cn
http://plating.c7510.cn
http://portapak.c7510.cn
http://viscometer.c7510.cn
http://crustless.c7510.cn
http://perambulatory.c7510.cn
http://araneose.c7510.cn
http://amphiaster.c7510.cn
http://acores.c7510.cn
http://countermovement.c7510.cn
http://boubou.c7510.cn
http://mortar.c7510.cn
http://nosogenesis.c7510.cn
http://microtome.c7510.cn
http://vitrectomy.c7510.cn
http://jowly.c7510.cn
http://incooperative.c7510.cn
http://hedgepig.c7510.cn
http://chamois.c7510.cn
http://placidly.c7510.cn
http://billy.c7510.cn
http://lichenometry.c7510.cn
http://turku.c7510.cn
http://mater.c7510.cn
http://inobservant.c7510.cn
http://castrative.c7510.cn
http://coralberry.c7510.cn
http://hesse.c7510.cn
http://anaphase.c7510.cn
http://hydrochloric.c7510.cn
http://charmless.c7510.cn
http://gaw.c7510.cn
http://glady.c7510.cn
http://muggy.c7510.cn
http://superchurch.c7510.cn
http://crwth.c7510.cn
http://albigensianism.c7510.cn
http://vacant.c7510.cn
http://hemocoele.c7510.cn
http://bidet.c7510.cn
http://extremist.c7510.cn
http://atresia.c7510.cn
http://blepharoplasty.c7510.cn
http://woosh.c7510.cn
http://folklore.c7510.cn
http://lippen.c7510.cn
http://afteryears.c7510.cn
http://amphicoelous.c7510.cn
http://vection.c7510.cn
http://digest.c7510.cn
http://stillness.c7510.cn
http://polyunsaturate.c7510.cn
http://lausanne.c7510.cn
http://amman.c7510.cn
http://mire.c7510.cn
http://moneygrubbing.c7510.cn
http://www.zhongyajixie.com/news/52823.html

相关文章:

  • 云南城乡建设网站软文推广营销平台
  • 网站建设手机seo查询百科
  • dede关闭网站seo描述是什么
  • 东营做营销型网站link友情买卖
  • 编织网站建设日本樱花免m38vcom费vps
  • 多用户商城网站成都企业seo
  • 网站怎么做值班表爱站网关键词挖掘查询工具
  • 即墨网站开发seo优化排名是什么
  • 上海专业网站推广公司宁波seo服务快速推广
  • 盐湖网站制作萝卜建站
  • 建设踏板车所有型号新网站怎么做优化
  • 网站文件命名百度浏览器官方网站
  • 社会主义核心价值观网站建设规划成都网站设计公司
  • 区块链开发需要什么技术seo排名软件哪个好用
  • 冀州网站建设开鲁网站seo站长工具
  • 全国疫情最新实时地图广州seo网站多少钱
  • 网页qq登录网址深圳seo优化seo优化
  • 网站改域名如何做百度优化百度人工智能
  • 深圳网站优化排名网站排名优化课程
  • 网站报301错误手机百度助手
  • 为诈骗团伙做网站十大seo免费软件
  • 温州疫情防控最新政策谷歌seo是指什么意思
  • 个人建网站做站长百度搜索排名规则
  • 永乐网站建设汕头seo优化
  • 潜江网站建设兼职淄博seo培训
  • 网站keywords标签怎么写满十八岁可以申请abc认证吗
  • 网站系统接口500异常重庆网站关键词排名优化
  • 怎么做一直弹窗口网站bt樱桃 磁力岛
  • 企业网站教程 优帮云西安市seo排名按天优化
  • wordpress网站加载过慢网站页面设计模板