C还是C++
编写os这种系统的话,能选择的编程语言不多,不像开发应用有很多高级高高级的编程语言可以选择。基本只有C和C++可以选择。
另外也有一些比较小众的选择,如D语言,这个是一个类C(C-like)语言。如Objective-C,这个是C语言的一个超集,如果采用这个来编写os(尤其是os内核)的话,还不如用C呢。
当然也有一些新的选择,如Rust,这个比较新,新出来的相关开发工具还不完善,而且Rust目前还只支持arm架构。
所以还是C和C++了。
C
这里选择C
汇编
GNU AS
当然也有其他可以选择的汇编,这里主要是汇编器的选择,如MASM,NASM。这里选择GNU AS。
C OOP
C-style 汇编
少量代码是需要通过汇编来实现的。包括有些比较核心的逻辑,可以用C实现,刻意使用汇编实现。这部分代码虽然采用汇编实现,也尽量保持C-style。主要包括堆栈维护,栈空间分配,指针参数引用操作(包括in/out),以及参数提升规则等。另外还有比如函数原型声明,结构类型定义,以及包括其他的一些定义,如micro,常量(micro),类型定义,声明等。
汇编代码可读性太差,不像C程序,比如函数,我们根据函数原型就基本有个大概了解,包括函数名,参数以及返回值。
为了使汇编代码可读性更好点,和C程序一样,有个C头文件,这个和C是一样的。
函数原型
结构类型定义
typedef enum { v01 = 0x01, v20 = 0x20, v21 = 0x21, v30 = 0x30 } i13_eXver_t; typedef struct { i13_eXver_t e_mVer; u2 e_support_bitmap; } i13_eX_t;
int i13_eXt(u1 drive, i13_eX_t *e);
# param 1: 8(%ebp), drive # param 2: 12(%ebp), a pointer to struct i13_eX_t, see struct i13_eX_t for details _i13_eXt: pushl %ebp movl %esp, %ebp movl 8(%ebp), %eax movb %al, %dl mov $0x41, %ah mov $0x55aa, %bx int $0x13 jnc i13_eXt_ok mov $1, %eax jmp i13_eXt_exit i13_eXt_ok: mov 12(%ebp), %esi movzbl %ah, %edx movl %edx, (%esi) movw %cx, 4(%esi) mov $0, %eax i13_eXt_exit: leave ret
汇编 OOP
相关推荐
本文所做的移植也只需要修改uC/OS-II处理器相关代码,一共包括3个文件:OS_CPU.H,...这是移植uC/OS-II到VC下第一个要考虑的问题。在windows的保护模式下不能像DOS下面那么容易,直接通过一个函数调用就能够修改中断。
1. **引导加载器**(Bootloader):在操作系统启动时,引导加载器是第一个被执行的程序。它负责将操作系统加载到内存中,通常是通过BIOS或UEFI固件。编写引导加载器需要了解汇编语言和磁盘扇区的组织结构。 2. **...
1.5 SylixOS 第一个应用程序 "hello world" 编写"hello world"程序是学习新平台开发的常见做法.在SylixOS上,开发者需要创建一个新的Application工程,然后在源代码中添加打印"hello world"的函数,最后通过IDE进行...
标题"JFE AND GCC C/C++语言编译器"指的是一个用于Windows操作系统的C和C++编程工具,其中JFE可能是“Java Front End”的简称,而GCC则是GNU Compiler Collection(GNU编译器集合)的缩写。GCC是一个广泛使用的开源...
标题中的“gcc-c++工具rpm安装包”指的是在Linux系统中用于编译C++程序的GNU Compiler Collection (GCC) 的rpm格式安装包。GCC不仅支持C++,还支持C、Fortran、Ada和Go等多种编程语言,但在这里我们主要关注其C++...
虽然汇编语言在操作系统开发中占据重要位置,但现代操作系统开发往往还会用到其他高级编程语言,如C/C++。这些语言提供了更好的抽象能力和更高效的开发流程,适合用于编写内核模块、驱动程序等非核心部分。 #### 3....
在 1978 年,布莱恩·柯林汉(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie)制作了 C 的第一个公开可用的描述,现在被称为 K&R 标准。 C 语言的特点: * 易于学习 * 结构化语言 * 产生高效率的程序 * 可以...
2. **《C程序设计》**:谭浩强的这本书是C语言的经典入门教程,掌握C语言是学习C++的基础。 3. **《数据结构(C语言版)》**:严蔚敏和吴伟民的书,深入讲解数据结构,这是所有编程语言中都必不可少的知识,对于...
- 引导加载器是操作系统启动的第一部分,它负责加载内核到内存并启动执行。 - 在Windows上,可以使用NASM或MASM这样的汇编语言编译器编写引导加载器。 6. **链接器和装载器**: - 链接器将编译后的对象文件合并...
### C++工程编译选项详解 #### 概述 在C++开发过程中,为了更好地控制编译过程,提升编译质量以及程序性能,理解和掌握编译器提供的各种编译选项至关重要。本文旨在详细介绍C++编译器的常用选项及其含义,帮助...
由于 VC 支持在 C/C++ 代码中嵌入汇编指令,因此无需专门的汇编代码文件,`os_cpu_a.asm` 文件变得多余。因此,在 VC 环境下,我们主要关注 `os_cpu.h` 和 `os_cpu_c.c` 这两个文件。 移植过程中首先需要解决的关键...
2. **启动代码(Bootloader)**:系统上电后执行的第一段代码,负责初始化内存、设置堆栈、加载程序到内存并跳转到C语言的主函数。 3. **中断服务程序(Interrupt Service Routines, ISR)**:处理外部或内部事件的...
2. 提高代码的并行度:这与第一点相关联,主要是指在编写汇编代码时,尽可能让多条指令同时执行,减少因等待某一长时延指令而造成的空闲周期。 3. 流水线核心循环的时钟周期数最小化:流水线是处理器提升指令吞吐量...
- uCOS_II.H、uCOS_II.C、OS_CORE.C、OS_TASK.C、OS_TIME.C、OS_FLAG.C、OS_MBOX.C、OS_MEM.C、OS_MUTEX.C、OS_Q.C、OS_SEM.C:构成UCOS-II核心的源文件。 - PC.C和PC.H:与PC平台相关的程序。 - INCLUDES.H和OS_CFG...
- **GCC (GNU C Compiler)**: 是一款广泛使用的开源编译器,支持多种编程语言,包括C、C++等。 - **GCC的工作流程**: - **预处理**: 执行宏替换、条件编译等。 - **编译**: 将源代码转换为汇编代码。 - **汇编**:...
1. **引导加载器**:这是操作系统启动的第一部分,通常位于硬盘的MBR(主引导记录)中。它的任务是将操作系统的内核加载到内存并跳转执行。 2. **内核初始化**:内核启动后,会进行一系列的初始化操作,例如设置...
网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的...