《汇编语言:基于linux环境》eatsyscall汇编程序

当阅读此书,作者编写了一个这样的程序,我也想试一下。照着书中的代码写了下,可以使用nasm正常编译,ld也可以正常链接,但是无法正常执行。总是报错。
在这里插入图片描述

;  nasm -f elf64 -g -F stabs  eatsyscall.asm
; ld -o eatsyscall eatsyscall.o
; ./eatsyscall
SECTION .dataEatMsg: db 'Eat at Joes!',10
EatLen: equ $-EatMsgSECTION .bss
SECTION .textglobal _start_start:;i386通过中断(int 0x80)来实现系统调用;寄存器 eax 中存放系统调用号,同时返回值也存放在 eax 中;当系统调用参数小于等于6个时,参数则必须按顺序放到寄存器 ebx,ecx,edx,esi,edi ,ebp中;当系统调用参数大于6个时,全部参数应该依次放在一块连续的内存区域里,同时在寄存器 ebx 中保存指向该内存区域的指针nopmov eax,4mov ebx,1mov ecx,EatMsgmov edx,EatLenint 80Hmov eax,1mov ebx,0int 80H

经过查找资料,我是64架构的cpu,在i386架构下才使用int 80调用。
64下要使用syscall
在这里插入图片描述

;nasm -f elf64 -g -F stabs  eatsyscall64.asm
;ld -o eatsyscall64 eatsyscall64.o
; ./eatsyscall64SECTION .dataEatMsg: db 'Eat at Joes!',10
EatLen: equ $-EatMsgSECTION .bss
SECTION .textglobal _start_start:nopmov rax, 1mov rdi, 1mov rsi, EatMsgmov rdx, EatLensyscall;x86_64 通过中断(syscall)指令来实现;寄存器 rax 中存放系统调用号,同时系统调用返回值也存放在 rax 中;当系统调用参数小于等于6个时,参数则必须按顺序放到寄存器 rdi,rsi,rdx,r10,r8,r9中;当系统调用参数大于6个时,全部参数应该依次放在一块连续的内存区域里,同时在寄存器 ebx 中保存指向该内存区域的指针;当进行函数调用时,参数少于7个, 参数从左到右放入寄存器: rdi, rsi, rdx, rcx, r8, r9。参数为7个以上时,前 6 个与前面一样, 但后面的依次从 "右向左" 放入栈中。mov rax, 60		;sys_exit的系统调用编号为60xor rdi, rdisyscall;mov eax, 1			;指定exit系统调用;mov ebx, 0			;返回0;int 80H				;80H中断,触发系统调用

使用nasm,ld编译,链接,可以正常运行。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/652264.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sqli-labs靶场第七关

7、第七关 id1 --单引号报错,id1" --双引号不报错,可以判断是单引号闭合 id1) --也报错,尝试两个括号闭合,id1)) --不报错 接下来用脚本爆库 import stringimport requestsnumbers [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] letters2 list(string.ascii_…

【销售数据分析】客户画像分析之总体画像

前一段时间把财务分析的一些报表及分析场景讲得差不多了,接下来想和大家讲一下销售分析中的一些场景。今年看了许多企业的数据,发现大家2023年比疫情三年更难!从财务的几张报表就会发现净利润亏损的居多,而亏损的主要原因基本上都…

【多线程笔记04】多线程之停止线程、取消线程任务的几种方式

这篇文章,主要介绍多线程之停止线程、取消线程任务的几种方式【知识星球】。 目录 一、问题描述 1.1、需求描述 1.2、技术方案

gitlab-runner注册到gitlab时报错:ERROR: Registering runner... failed xxxxxxxx

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。 文章目录 场景报错分析解决场景 docker部署gitlab-runner后注册到gitlab 在进入gitlab-runner容…

Easysearch:语义搜索、知识图和向量数据库概述

什么是语义搜索? 语义搜索是一种使用自然语言处理算法来理解单词和短语的含义和上下文以提供更准确的搜索结果的搜索技术。旨在更好地理解用户的意图和查询内容,而不仅仅是根据关键词匹配,还通过分析查询的语义和上下文来提供更准确和相关的…

什么是DevOps?DevOps是如何提效的?

文章目录 前言一、DevOps是什么?二、DevOps是如何提效的?总结 前言 随着软件行业的不断发展,如何打破开发、运维、测试之间的边界,使工作更加高效成为了企业的新一个难题,本文将向大家介绍DevOps文化,以及…

巨杉数据库携手广发证券入选2023大数据“星河”案例

近期,中国信息通信研究院、中国通信标准化协会大数据技术标准推进委员会(CCSA TC601)连续七年共同组织的大数据“星河(Galaxy)”案例征集活动发布公示。本次征集活动,旨在通过总结和推广大数据产业发展的优秀成果,推动…

C++多线程1(复习向笔记)

创建线程以及相关函数 当用thread类创建线程对象绑定函数后&#xff0c;该线程在主线程执行时就已经自动开始执行了,join起到阻塞主线程的作用 #include <iostream> #include <thread> #include <string> using namespace std; //测试函数 void printStrin…

前后端交互

1-前后端交互概述 1.1接口调用方式 原生ajax 基于jQuery的ajax fetch&#xff08;ajax的升级版&#xff09; axios &#xff08;第三方的库&#xff09; 1.2 url 地址格式有哪些 传统的url http://host:port/path?query#fragment http协议----https&#xff0c;ftp ho…

被鹅厂最新开源AI绘画工具PhotoMaker圈粉了,多风格头像生成器就靠它了!

要说本周AIGC开源爆火项目&#xff0c;腾讯的PhotoMaker 可以入选其一。而 PhotoMaker 是腾讯Arc于4天前开源上线到GitHub的&#xff0c;更有一众互联网科技领域大V体验推荐&#xff0c;当前Star已经有4.7k了&#xff01; 相信小编这篇文章发布时star预测可能达到5k了。而 Pho…

js打地鼠

文章目录 1实现效果2代码实现 1实现效果 游戏难度&#xff1a;简单&#xff0c;一般&#xff0c;困难&#xff0c;噩梦&#xff08;控制setInterval的time参数&#xff09; 按钮功能&#xff1a;结束&#xff08;可以通过修改gameScore的值来修改判定结束的分数&#xff09;&am…

SpringBoot AOP应用(公共字段填充)

背景 在很多场景下&#xff0c;我们对需要对一些公共字段进行赋值操作&#xff0c;如果我们每一个公共字段都进行代码赋值那无疑会增加很多重复无用代码&#xff0c;都会导致我们的 代码臃肿&#xff0c;所以我们使用AOP切面编程&#xff0c;实现功能增强&#xff0c;来完成公…

3个精美的wordpress律师网站模板

暗红色WordPress律师事务所网站模板 演示 https://www.zhanyes.com/qiye/23.html 暗橙色WordPress律师网站模板 演示 https://www.zhanyes.com/qiye/18.html 红色WordPress律所网站模板 演示 https://www.zhanyes.com/qiye/22.html

2023 IoTDB Summit:Dr. Feinauer《Apache IoTDB在德国工业和关键基础设施中的应用》

12 月 3 日&#xff0c;2023 IoTDB 用户大会在北京成功举行&#xff0c;收获强烈反响。本次峰会汇集了超 20 位大咖嘉宾带来工业互联网行业、技术、应用方向的精彩议题&#xff0c;多位学术泰斗、企业代表、开发者&#xff0c;深度分享了工业物联网时序数据库 IoTDB 的技术创新…

Biotin-PEG4-TSA,生物素-PEG4-酪胺,用于标记蛋白质、核酸等生物分子

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;Biotin-PEG4-Tyramide&#xff0c;Biotin-PEG4-TSA&#xff0c;生物素-PEG4-酪胺&#xff0c;Biotin PEG4 Tyramide&#xff0c;Biotin PEG4 TSA 一、基本信息 产品简介&#xff1a;Biotin PEG4 Tyramide is compos…

React 中条件渲染的 N 种方法

本文作者系360奇舞团前端开发工程师 条件渲染在React开发中非常重要的功能&#xff0c;它允许开发人员根据条件控制渲染的内容&#xff0c;在创建动态和交互式用户界面方面发挥着至关重要的作用&#xff0c;本文总结了常用的的条件渲染方法。 1.If-else if-else是一种控制流程…

mac 10.15.7 Unity 2021.3.14 XCode 12.4 -> Unity IOS 自动安装 Cocoapods 失败解决方法

自己这两天在用Unity开发IOS时&#xff0c;遇到了安装Cocoapods失败的问题&#xff0c;记录一下问题及解决方法&#xff0c;便于自己后续查看&#xff0c;以及有相同遭遇的人查看 发生场景&#xff1a;打开 unity&#xff0c;触发自动安装 Cocoapods -> 安装失败&#xff08…

基于Micropython利用ESP32-C3驱动墨水屏显示图片

从咸鱼上淘了两块2.9寸的墨水屏价签&#xff0c;可以结合ESP32-C3做个低功耗的时钟温湿度计。 1、所需硬件 合宙的ESP32-C3&#xff1a; 电子价签拆出来的2.9寸墨水屏&#xff1a; ——电子价签型号为&#xff1a;Stellar-L&#xff0c;墨水屏型号为&#xff1a;E029A01。电子…

vue3之echarts3D环柱图

vue3之echarts3D环柱图 效果&#xff1a; 核心代码&#xff1a; <template><div class"container"><div ref"chartRef" class"charts"></div></div> </template><script lang"ts" setup&g…

3. SQL 语言

重点&#xff1a; MySQL 的 三种安装方式&#xff1a;包安装&#xff0c;二进制安装&#xff0c;源码编译安装。 MySQL 的 基本使用 MySQL 多实例 DDLcreate alter drop DML insert update delete DQL select 3&#xff09;SQL 语言 3.1&#xff09;关系型数据库的常见…