直接跳转与间接跳转

article/2025/11/5 16:10:49

转载自:

https://www.csdn.net/tags/MtjaIg1sNDE1MDYtYmxvZwO0O0OO0O0O.htmlicon-default.png?t=M5H6https://www.csdn.net/tags/MtjaIg1sNDE1MDYtYmxvZwO0O0OO0O0O.html

正常执行的情况下,指令按照它们出现的顺序一条一条地执行。跳转(jmp)指令会导致执行切换到程序中一个全新的位置。

在汇编代码中,这些跳转的目的地通常用一个标号(label)指明。

考虑下面的汇编代码序列:

movq $0, %rax
jmp .L1
movq (%rax), %rdx
.L1:popq %rdx

指令jmp .L1会导致程序跳过movq指令,而从popq指令开始继续执行。在产生目标代码文件时,汇编器会确定所有带标号指令的地址,并将跳转目标(目的指令的地址)编码为跳转指令的一部分(所以是间接跳转)

下表列举了不同的跳转指令。jmp指令是无条件跳转。它可以是直接跳转,即跳转目标是作为指令的一部分编码的;也可以是间接跳转,即跳转目标是从寄存器或内存位置中读出的。汇编语言中,直接跳转是给出一个标号作为跳转目标的,例如上面的例子中标号.L1

间接跳转的写法是*后面跟一个操作数指示符。举个例子:

指令jmp *%rax用寄存器%rax中的值作为跳转目标。

指令jmp *(%rax)%rax中的值作为读地址,从内存中读出跳转目标。

指令同义名跳转条件描述
jmp Label1直接跳转
jmp *Operand1间接跳转
je LabeljzZF相等/零
jne Labeljnz~ZF不相等/非零
js LabelSF负数
jns Label~SF非负数
jg Labeljnle~(SF ^ OF) & ~ZF大于(有符号>)
jge Labeljnl~(SF ^ OF)大于或等于(有符号>=)
jl LabeljngeSF ^ OF小于(有符号<)
jle Labeljng(SF ^ OF) | ZF小于或等于(有符号<=)
ja Labeljnbe~CF & ~ZF超过(无符号>)
jae Labeljnb~CF超过或相等(无符号>=)
jb LabeljnaeCF低于(无符号<)
jbe LabeljnaCF | ZF低于或相等(无符号<=)

表中所示的其他跳转指令都是有条件的——它们根据条件码的某种组合,或者跳转,或者继续执行代码序列中下一条指令。


http://chatgpt.dhexx.cn/article/2jRioaNd.shtml

相关文章

Vue路由跳转传参或打开新页面跳转

1. 通过路由中的name属性 使用params传递参数, 使用this.$route.params获取参数 这种方式传递相当于post请求, 传递的数据不会显示在url地址栏,但是页面刷新,参数会丢失 1 2 3 4 5 6 7 8 9 // 传递参数 this.$router.push({ name: "首页", params: { …

Nginx 跳转

目录 一.Nginx常见模块1.http2.server3.location 二.location1.一般分为普通和正则2.location 常用的匹配规则3.location 示例4.location优先级排列说明 三.REWRITE模块1.功能2.跳转场景3.跳转实现4.执行顺序5.语法格式6.实例6.1域名跳转6.2基于客户端IP 访问跳转6.3基于旧域名…

pyqt5的页面跳转

前言&#xff1a; 正在学习python&#xff0c;学到了文件读取操作&#xff0c;想用pyqt5实现一下&#xff0c;发现我对于pyqt5还是不够了解。 现在记录一下我用pyqt5实现页面跳转的过程 方便以后查阅 pycharm使用pyqt5的话建议解释器用python3.7 由于目前我的水平还是太菜&…

div链接跳转

1、先建立一个div 2、给div写个id&#xff0c;直接写个go吧&#xff0c;再写个class&#xff0c;就叫go1吧 3、给它里面写个你要跳转的网址名称 4、给它设置个样式&#xff0c;弄个黑色背景什么的 5、然后把字体调成白色&#xff0c;文字居中 6、这是目前这个div的样子 7、接着…

layui页面跳转

//模拟单页跳转 $(document).ready(function(){ $(“dd>a”).click(function (e) { e.preventDefault(); $("#iframeMain").attr(“src”,$(this).attr(“href”)); }); }); 逻辑&#xff1a;通过jq拿a的href值放到iframe的src属性上 解释&#xff1a; e.preventD…

html-超链接跳转-外部和内部页面跳转

a标签表示超链接 1、通过a标签来表示超链接&#xff0c;点击超链接文本可以跳转到绑定的网站地址 1表示外部的地址 2表示内部的页面的访问地址&#xff0c;不是填写内部页面&#xff0c;内部页面访问地址

AS页面跳转

在MyAdapter中定义如下接口,模拟ListView的OnItemClickListener&#xff1a; //define interface public static interface OnItemClickListener { void onItemClick(View view , int position); } 1 2 3 4 声明一个这个接口的变量&#xff1a; private OnItem…

页面跳转的两种方式(转发和重定向)区别详解:

转发和重定向的路径问题(重点) 1&#xff09;使用相对路径在重定向和转发中没有区别 2&#xff09;重定向和请求转发使用绝对路径时&#xff0c;根/路径代表了不同含义 重定向response.sendRedirect(“xxx”)是服务器向客户端发送一个请求头信息&#xff0c;由客户端再请求一次…

go语言web开发系列之八:gin框架中用go-redis缓存数据

一&#xff0c;安装需要用到的库 1,安装go-redis liuhongdiku:~$ go get -u github.com/go-redis/redis 说明&#xff1a;刘宏缔的go森林是一个专注golang的博客&#xff0c; 网站&#xff1a;https://blog.imgtouch.com 原文: go语言web开发系列之八:gin框架中用go-redis缓…

go语言web开发系列之二十一:用go-qrcode库生成二维码

一&#xff0c;安装用到的库 1,go-qrcode库的地址 GitHub - skip2/go-qrcode: :sparkles: QR Code encoder (Go) 2&#xff0c;安装go-qrcode库 liuhongdiku:~$ go get -u github.com/skip2/go-qrcode/... 3,resize库的地址&#xff08;在二维码中间放icon时太大时需要缩放…

go语言web开发出错

2019独角兽企业重金招聘Python工程师标准>>> err listen tcp :8080: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted. 原因&#xff1a;开了两个服务器&#xff0c;造成监听端口冲突 转载于:https://my.osc…

go语言有哪些web框架

前言 由于工作需要&#xff0c;这些年来也接触了不少的开发框架&#xff0c;Golang的开发框架比较多&#xff0c;不过基本都是Web”框架”为主。这里稍微打了个引号&#xff0c;因为大部分”框架”从设计和功能定位上来讲&#xff0c;充其量都只能算是一个组件&#xff0c;需要…

go语言服务器代码,Go语言开发简单web服务器

欢迎&#xff0c;来自IP地址为&#xff1a;182.103.254.107 的朋友 Go语言由于其方便的并发通信机制以及强大的网络支持&#xff0c;常常被用于服务器软件的开发。本文将示例使用Go语言来开发简单的Web服务器。 HTTP协议是应用层协议&#xff0c;协议模型位于TCP之上&#xff0…

Go语言WEB开发[html/template包]

Go语言Web开发 Go语言提供了html/template包来支持模板渲染。Go提供的html/template包对HTML模板提供了丰富的模板语言&#xff0c;主要用于Web应用程序。 模板中的变量 模板中的变量通过{{.}} 来访问。 {{.}} 称为管道和root。 在模板文件内&#xff0c;{{.}}代表当前变量&…

Go语言web开发

一. HTTP Http:无状态协议,是互联网中使用Http实现计算机和计算机之间的请求和响应 Http使用纯文本方式发送和接收协议数据,不需要借助专门工具进行分析就可以知道协议中数据 Http报文(message)组成部分 请求行(request-line)请求头(head)请求体(body)响应头响应体 HTTP 1.1 实…

Go进阶:Go语言最热门的开源Web开发框架总结

注意&#xff1a;后续技术分享&#xff0c;第一时间更新&#xff0c;以及更多更及时的技术资讯和学习技术资料&#xff0c;将在公众号CTO Plus发布&#xff0c;请关注公众号&#xff1a;CTO Plus Go语言是近年来备受关注的一种编程语言&#xff0c;它以其高效、安全、简洁的特…

Go语言五大主流web框架

以下 star数截止2023年7月份 1.Gin&#xff08;69.7K&#xff09; 项目简介&#xff1a;Gin 是一个用 Go (Golang) 编写的 HTTP Web 框架。 它具有类似 Martini 的 API&#xff0c;但性能比 Martini 快 40 倍。 仓库地址&#xff1a;https://github.com/gin-gonic/ginhttps:…

Go语言web开发入门

创建两个文件main.go 和hello.txt main.go package mainimport ("fmt""io/ioutil""net/http" )func sayHello(w http.ResponseWriter, r *http.Request) {b, _ : ioutil.ReadFile("D:/桌面/goprojects/gin框架快速入门/gin框架与Go语言模…

GO 语言 Web 开发实战一

xdm&#xff0c;咱今天分享一个 golang web 实战的 demo go 的 http 包&#xff0c;以前都有或多或多的提到一些&#xff0c;也有一些笔记在我们的历史文章中&#xff0c;今天来一个简单的实战 HTTP 编程 Get 先来一个 小例子&#xff0c;简单的写一个 Get 请求 拿句柄 设置…

goweb开发实战笔记(一)

目录 &#x1f9e1;Gin简介 &#x1f9e1;Gin特性 &#x1f9e1;Gin环境搭建 &#x1f9e1;HTTP请求和参数解析 创建Engine Handle方法处理 Engine分类处理 表单实体绑定 ShouldBindQuery ShouldBind JSON 多数据格式返回请求结果 []byte切片 string JSON HTML…