⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 start.s

📁 操作系统课程设计。在UNIX平台下实现Solary操作系统的一些功能
💻 S
字号:
/* Start.s  *	Assembly language assist for user programs running on top of Nachos. * *	Since we don't want to pull in the entire C library, we define *	what we need for a user program here, namely Start and the system *	calls. */#define IN_ASM#include "syscall.h"        .text           .align  2/* ------------------------------------------------------------- * __start *	Initialize running a C program, by calling "main".  * * 	NOTE: This has to be first, so that it gets loaded at location 0. *	The Nachos kernel always starts a program by jumping to location 0. * ------------------------------------------------------------- */	.globl __start	.ent	__start__start:	jal	main	move	$4,$0			jal	Exit	 /* if we return from main, exit(0) */	.end __start/* ------------------------------------------------------------- * System call stubs: *	Assembly language assist to make system calls to the Nachos kernel. *	There is one stub per system call, that places the code for the *	system call into register r2, and leaves the arguments to the *	system call alone (in other words, arg1 is in r4, arg2 is  *	in r5, arg3 is in r6, arg4 is in r7) * * 	The return value is in r2. This follows the standard C calling * 	convention on the MIPS. * ------------------------------------------------------------- */	.globl Halt	.ent	HaltHalt:	addiu $2,$0,SC_Halt	syscall	j	$31	.end Halt	.globl Exit	.ent	ExitExit:	addiu $2,$0,SC_Exit	syscall	j	$31	.end Exit	.globl Exec	.ent	ExecExec:	addiu $2,$0,SC_Exec	syscall	j	$31	.end Exec	.globl Join	.ent	JoinJoin:	addiu $2,$0,SC_Join	syscall	j	$31	.end Join	.globl Create	.ent	CreateCreate:	addiu $2,$0,SC_Create	syscall	j	$31	.end Create	.globl Open	.ent	OpenOpen:	addiu $2,$0,SC_Open	syscall	j	$31	.end Open	.globl Read	.ent	ReadRead:	addiu $2,$0,SC_Read	syscall	j	$31	.end Read	.globl Write	.ent	WriteWrite:	addiu $2,$0,SC_Write	syscall	j	$31	.end Write	.globl Close	.ent	CloseClose:	addiu $2,$0,SC_Close	syscall	j	$31	.end Close	.globl Fork	.ent	ForkFork:	addiu $2,$0,SC_Fork	syscall	j	$31	.end Fork	.globl Yield	.ent	YieldYield:	addiu $2,$0,SC_Yield	syscall	j	$31	.end Yield/* dummy function to keep gcc happy */        .globl  __main        .ent    __main__main:        j       $31        .end    __main

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -