?? start.c
字號:
/* 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 + -