在应用层的切换这部分,《一个64位操作系统的设计与实现》书中将一个函数复制到了0x800000地址后,然后跳转执行,不过实际复现的时候出现无法正确执行的问题。

首先放上函数原型

void 

单步调试来到 0x800000 源代码执行处,发现汇编源码在调用 printf_color 这个函数的时候执行的是 call rcx,也就是说函数的地址放在寄存器中,而在开头处是通过 rip 得到的函数的地址

但是在跳转后我们的 rip 不是原来的 rip 了,所以无法正确执行。

因此目前的解决方法是去掉所有会出错的函数调用

(新更新)

经过一番探索,找到一个替代办法,将要调用的函数的地址写入指针中进行调用,并且将一些变量设置为本地变量,具体如下图

系统无法执行指定的程序。_自制操作系统-函数代码副本跳转无法正确执行的问题...相关推荐

  1. 系统无法执行指定的程序。_使用Rust编写操作系统(一):独立式可执行程序

    创建一个不连接标准库的Rust可执行文件,将是我们迈出的第一步.无需底层操作系统的支撑,这将能让在裸机(bare metal)上运行Rust代码成为现实. 简介 要编写一个操作系统内核,我们需要不基于 ...

  2. java JLabel改变大小后如何刷新_到底一行java代码是如何在计算机上执行的

    不知道你是否思考过,每次我们在IDEA中右键Run Application启动主方法,假如程序运行正常,控制台也打印出了你所要打印的信息,在这个过程中你知道这台计算机上那些硬件及其软件都是以什么样的方 ...

  3. 如何读emmc里的引导程序_自制操作系统学习1 引导程序

    本系列学习有前面的汇编学习基础最好,如果没有影响也不大本系列学习主要资源来自<[30天自制操作系统].(川合秀实)>,<自己动手写操作系统>两本书 一.准备工作 bochs v ...

  4. deepin系统15.6版本安装执行那个exe文件_深度操作系统 deepin 20(1003)正式版发布:计算器支持科学计算,新增邮件、相机等应用...

    原标题:深度操作系统 deepin 20(1003)正式版发布:计算器支持科学计算,新增邮件.相机等应用 IT之家10月22日消息 deepin 20 正式版发布一个月后,社区版本迎来了第一次更新 ( ...

  5. 如何命令行结束react程序_前端架构React和Vue CTO的选择正确框架的指南

    快速总结:为项目选择正确的javascript框架或库是CTO和项目经理的基本任务.然而,选择的范围很大程度上取决于几个因素,如项目时间.学习曲线.框架性能和团队规模.这篇文章旨在指导他们选择正确的j ...

  6. eclipse关闭java程序_如何为Java代码的某些部分关闭Eclipse代码格式化程序?

    我有一些Java代码,其中SQL语句编写为Java字符串(请不要使用OR / M flamewars,嵌入式SQL就是这样 - 不是我的决定) . 为了便于维护,我在几行代码中将SQL语句在语义上分解 ...

  7. python收集数据程序_用一行Python代码进行数据收集探索!Python真牛逼!

    简易的Pandas之路 任何使用P ython数据的人都会熟悉Pandas包.P andas是大多数行和列格式数据的go-to包. 如果你没有Pandas,请确保在终端中使用pip install安装 ...

  8. python 代码转程序_精悍的Python代码段-转

    1 文件处理 readlines() 和 writelines()方法可以讲列表元素依次写到文件中: file类本身没有提供复制方法,可以使用read()和write()方法模拟实现文件的拷贝,也可以 ...

  9. 系统上关闭是意外的_紧急关闭iOS13,有史以来跳版本关闭系统

    说重点:今天,苹果公司正式关闭了 iOS12.4.1 .13.0 和 13.1.1 系统验证,意味着你现在无法升级或降级该系统版本,你只能升级到 iOS 13.1 和iOS 13.1.2 系统版本,而 ...

最新文章

  1. 使用Python,OpenCV在视频中进行实时条形码检测
  2. 盘点几个值得你借鉴的Java学习方法
  3. 微信可能会颠覆快递的运营模式
  4. 《系统集成项目管理工程师》必背100个知识点-99云计算
  5. 如果我问你:排序算法的「稳定性」有何意义?你怎么回答?
  6. oracle 怎么读取模板,获取、部署和管理Oracle VM模板
  7. ES6, Angular,React和ABAP中的String Template(字符串模板)
  8. MongoDB基本操作(增删改查)
  9. 记一次和摄像头的摩擦经历
  10. 电信设置的nat 虚拟服务器192.168.1.3 是什么,VMware WorkStation的三种网络连接方式详解...
  11. OpenGL基础26:Assimp库
  12. 实战分析APP提交苹果App Store审核被拒绝的一些原因以及对策
  13. Git系列——删除文件的找回
  14. 百度LBS开放平台Android SDK产品使用
  15. Flurry、友盟、TalkingData,Google analytic移动应用统计分析对比
  16. html怎样自动播放视频,html5自动播放mov格式视频的实例代码
  17. 操作系统课程设计-进程管理
  18. Win flex-bison 的简单使用
  19. python给excel排序_Python实现EXCEL表格的排序功能示例
  20. 有些视频不显示IDM的下载按钮

热门文章

  1. Git 使用明细,持续完善中......
  2. 计算机网络知识学习(核心:网络协议)-- 运输层
  3. 【Word】关于Word文档写作中遇到的一些问题
  4. php pdf添加水印图片,php pdf添加水印(中文水印,图片水印)
  5. mysql 非英文_非英文网站如何使用MySQL的字符集
  6. 学校运动会广播稿计算机,学校运动会广播稿【五篇】
  7. linux基础命令游戏,LINUX-基础命令(三)
  8. java记秒,Java程序获取自Java时代开始以来的秒数
  9. 会做饭的机器人曰记_做饭机器人作文作文300字
  10. Atlassian JIRA 插件开发之一 环境搭建