Upload files to "/"
This commit is contained in:
parent
e2d498ecc4
commit
50c928f6f6
3 changed files with 76 additions and 0 deletions
8
main.c
Normal file
8
main.c
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
#include "headers/nstdo.h"
|
||||
extern long sys_write(int fd, const void *buf, size_t count);
|
||||
|
||||
int main(void) {
|
||||
const char msg[] = "Hello, World!\n";
|
||||
sys_write(1, msg, sizeof(msg)-1);
|
||||
return 0;
|
||||
}
|
||||
52
nstdo.h
Normal file
52
nstdo.h
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
#ifndef MINI_STDIO_H
|
||||
#define MINI_STDIO_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef unsigned long size_t;
|
||||
typedef long off_t;
|
||||
|
||||
#define O_RDONLY 0
|
||||
#define O_WRONLY 1
|
||||
#define O_RDWR 2
|
||||
#define O_CREAT 64
|
||||
#define O_TRUNC 512
|
||||
#define O_APPEND 1024
|
||||
#define O_CLOEXEC 02000000
|
||||
|
||||
typedef __builtin_va_list va_list;
|
||||
#define va_start(ap,last) __builtin_va_start(ap,last)
|
||||
#define va_arg(ap,type) __builtin_va_arg(ap,type)
|
||||
#define va_end(ap) __builtin_va_end(ap)
|
||||
|
||||
#define SYS_READ 0
|
||||
#define SYS_WRITE 1
|
||||
#define SYS_OPEN 2
|
||||
#define SYS_CLOSE 3
|
||||
#define SYS_LSEEK 8
|
||||
|
||||
static inline long _syscall3(long nr,long a1,long a2,long a3){long ret;asm volatile("syscall":"=a"(ret):"a"(nr),"D"(a1),"S"(a2),"d"(a3):"rcx","r11","memory");return ret;}
|
||||
|
||||
#ifndef MY_BUFSIZ
|
||||
#define MY_BUFSIZ 4096
|
||||
#endif
|
||||
|
||||
typedef struct{int fd;char buf[MY_BUFSIZ];size_t pos;size_t len;int mode;}MY_FILE;
|
||||
|
||||
MY_FILE* my_fopen(const char* path,int flags,int mode);
|
||||
int my_fclose(MY_FILE* f);
|
||||
size_t my_fread(void* ptr,size_t size,size_t nmemb,MY_FILE* f);
|
||||
size_t my_fwrite(const void* ptr,size_t size,size_t nmemb,MY_FILE* f);
|
||||
int my_putc(int c,MY_FILE* f);
|
||||
int my_puts(const char* s,MY_FILE* f);
|
||||
off_t my_seek(MY_FILE* f,off_t offset,int whence);
|
||||
int my_printf(MY_FILE* f,const char* fmt,...);
|
||||
int my_vprintf(MY_FILE* f,const char* fmt,va_list ap);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
16
syscalls.asm
Normal file
16
syscalls.asm
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
global _start
|
||||
global sys_write
|
||||
extern main
|
||||
|
||||
section .text
|
||||
|
||||
sys_write:
|
||||
mov rax, 1
|
||||
syscall
|
||||
ret
|
||||
|
||||
_start:
|
||||
call main
|
||||
mov rdi, rax
|
||||
mov rax, 60
|
||||
syscall
|
||||
Loading…
Add table
Add a link
Reference in a new issue