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

《操作系统真相还原》——完善内核

在这里我们用汇编实现了一个打印字符的函数,并在c语言中调用这个函数。
在这里插入图片描述
需要注意的是,我们在实现函数是遵循cdecl约定

(1)调用者将所有参数从右向左入栈。
(2)被调用者清理参数所占的栈空间。

#include "print.h"
int main(){put_char('6');put_str("6666");put_int(8);while(1);
}

不错成功

sh

将用到的命令整合一下成一个sh文件

#!/bin/bash
if [ ! -d "./out" ]; thenmkdir out
fi
if [ -e "hd3M.img" ]; thenrm -rf hd3M.img  
fi
if [ ! -d "./out/boot" ];then mkdir out/boot
fi 
if [ ! -d "./out/kernel" ];then mkdir out/kernel 
fi 
nasm -I ./include/ -o ./out/boot/mbr.bin ./mbr3-1.S && dd if=./out/boot/mbr.bin of=../c.img bs=512 count=1  conv=notrunc
nasm -I ./include/ -o ./out/boot/loader.bin ./loader.S && dd if=./out/boot/loader.bin of=../c.img bs=512 count=4 seek=2 conv=notrunc
nasm -f elf -o out/kernel/print.o lib/kernel/print.S
gcc -m32 -I lib/kernel -c -o out/kernel/main.o kernel/main.c
ld -m elf_i386  -Ttext 0xc0001500 -e main -o ./out/kernel/kernel.bin out/kernel/main.o out/kernel/print.o && \dd if=./out/kernel/kernel.bin of=../c.img bs=512 count=200 seek=9 conv=notrunc

相关文章:

  • java反序列化: Transformer链技术剖析
  • python爬虫:Ruia的详细使用(一个基于asyncio和aiohttp的异步爬虫框架)
  • 【兽医处方专用软件】佳易王兽医电子处方软件:高效智能的宠物诊疗管理方案
  • Linux入门(十三)动态监控系统监控网络状态
  • 【机器人编程基础】python中的算术运算符
  • ps色阶调整
  • c++ 赋值函数和拷贝构造函数的调用时机
  • debian12操作系统apt命令出现无法安全的用该源更新解决方案
  • 在考古方向遥遥领先的高校课程建设-250602
  • postman工具使用
  • javaEE->IO:
  • 力扣热题100之对称二叉树
  • 【leetcode】459.重复的子字符串
  • 【Hot 100】70. 爬楼梯
  • 面向对象进阶 | 深入探究 Java 静态成员与继承体系
  • 监督学习 vs 无监督学习:AI两大学习范式深度解析
  • 数学建模期末速成 最短路径
  • 如何提升大模型召回率和实战案例
  • 模块二:C++核心能力进阶(5篇) 篇一:《STL源码剖析:vector扩容策略与迭代器失效》
  • 由浅入深一文详解同余原理
  • 动漫网站建设/北京首页关键词优化
  • 网站升级维护需要多久/天津seo结算
  • 设计h5是什么意思/北京网站建设优化
  • 响应式网站建设服务商/2023年8月份新冠
  • 网站功能表/seo sem是什么职位
  • 合肥网站建设网页设计/网络推广app是违法的吗