首页 > 其他分享 >0176-打印错误提示信息

0176-打印错误提示信息

时间:2024-07-14 09:18:49浏览次数:14  
标签:kernel 错误代码 打印 elf mov 0176 start ex 提示信息

环境

  • Time 2022-11-12
  • WSL-Ubuntu 22.04
  • QEMU 6.2.0
  • NASM 2.15.05

前言

说明

参考:https://os.phil-opp.com/entering-longmode//

目标

为了方便在出错的时候,看到错误代码,新增一个打印错误代码的函数。

汇编代码

section .multiboot_header
header_start:
    dd 0x1BADB002  ; 魔法数字,固定值
    dd 0
    dd -0x1BADB002 ; 定义的这三个数字相加需要等于0
header_end:

global start
section .text
bits 32

start:
mov al,44
call error

; 打印 `ERR: ` 和一个错误代码并停住。
; 错误代码在 al 寄存器中
error:
    mov dword [0xb8000], 0x4f524f45
    mov dword [0xb8004], 0x4f3a4f52
    mov dword [0xb8008], 0x4f204f20
    mov byte  [0xb800a], al
    hlt

其中的 call 指令在之前已经学过了,同时 0xb8000 在之前实模式时也学过了。

自动启动 QEMU 脚本

#! /usr/bin/bash

nasm -f elf32 -g boot.asm
ld -T linker.ld -m elf_i386 boot.o -o kernel.elf
qemu-system-x86_64 -kernel kernel.elf -display curses -s -S

自动 GDB 连接脚本

#! /usr/bin/bash

gdb kernel.elf -ex "set architecture i386:x86-64" \
    -ex "target remote localhost:1234" \
    -ex "break start" -ex "continue"

总结

通过启动 QEMU 和 GDB,单步调试后,屏幕上打印出了红色的 ERR 字样。

附录

标签:kernel,错误代码,打印,elf,mov,0176,start,ex,提示信息
From: https://www.cnblogs.com/jiangbo4444/p/18301107

相关文章

  • 2024上半年软考电子证书已可下载!附下载打印流程(7月11号即可下载了)
    一、中国人事考试网,可以看到证书样式1.进入中国人事考试网中国人事考试网(cpta.com.cn)http://www.cpta.com.cn/如下图所示:​2.点击证书查验 没注册的同学请先注册然后再登录,登录之后即可看到以下界面:​3.点击下载证书样式如下所示:二、中国计算机技术职业......
  • 计算一组整数的平方,并打印出来
    packagemainimport("fmt""sync")funcsquare(test*sync.WaitGroup,nint){//使用sync.WaitGroup来等待所有goroutine完成defertest.Done()//确保在square函数结束时减少WaitGroup的计数器值fmt.Printf("平方数:%d\n",n......
  • vue-print-nb 打印 clickMounted 回调为何不触发
    <template><div><divid="printMe"><el-table:data="tableData"style="width:100%;"><el-table-columnprop="date"label="Date"width=&quo......
  • C# winform e.Graphics.DrawString 旋转打印一例
    前段时间的合格证标签打印老是卡纸,车间将纸竖过来放卡纸少很多,程序也要做修改,在原程序上加了以下两行代码;e.Graphics.TranslateTransform(285,685);e.Graphics.RotateTransform(-90.0F);第一行的两个坐标,要一点一点调试,没有找到什么科学的......
  • 帝国CMS网站提示信息函数1
    提示信息函数1语法:printerror($error,$gotourl,$ecms,$noautourl,$novar)说明:$error:提示信息内容,可以为语言包变量,也可以直接提示内容。$gotourl:提示信息转向链接地址$ecms:0为后台提示信息、1为前台提示信息、8为后台提示信息(alert方式)、9为前台提示信息(alert方式)$noautourl:0......
  • C语言中的数组:掌握数据的有序集合【一维数组,二维数组,字符串数组,直方图打印,计算全排列,
    目录C语言中的数组:掌握数据的有序集合【一维数组,二维数组,字符串数组】一维数组一维数组的创建数组的七种初始化完全初始化:部分初始化:字符数组的初始化:自动初始化为0:使用`memset`函数初始化:循环初始化:指定初始化器(`c99`,`gcc`)支持:一维数组的使用案例1:统计随机数的分布......
  • 亚马逊ERP终身版无隐收费自动查询品牌备案状态打印国际单号
    今天给大家分享一下有关采集和管理的软件,对于做跟卖的人来说,需要大量采集产品,采集过来的产品还需要进行文本图片翻译、修图、等操作,图片储存和站点维护另算。市面上有些ERP软件在这些功能上是需要收费的,所以在选择ERP时要注意这些隐藏收费。通过采集或者说同行搬运找到......
  • Creo工程图打印设置(一)
    pdf线宽问题打印笔table.pntpen1thickness0.015cmpen2thickness0.1cmpen3thickness0.01cmpen4thickness0.012cmpen5thickness0.01cmpen6thickness0.01cmpen7thickness0.01cmpen8thickness0.015cmCREO工程图导出的比例问题怎么解决coh......
  • Franka Robot 打印机器人关节位姿(print_joint_poses.cpp)
    //Copyright(c)2023FrankaRoboticsGmbH//UseofthissourcecodeisgovernedbytheApache-2.0license,seeLICENSE#include<iostream>#include<iterator>#include<franka/exception.h>#include<franka/model.h>/***@exam......
  • springboot项目一直在打印Redis链接信息Reconnecting, last destination was
    控制台打印如下:15:03:26.279[lettuce-eventExecutorLoop-1-4]INFOi.l.c.p.ConnectionWatchdog-[log,171]-Reconnecting,lastdestinationwas/192.168.0.6:637915:03:26.282[lettuce-nioEventLoop-4-2]INFOi.l.c.p.ReconnectionHandler-[lambda$null$3,174]-Rec......