My Project
Loading...
Searching...
No Matches
az_putchar.c
Go to the documentation of this file.
1// kernel_lib_printf_functions
2/*
3 * Kernel Lib Printf Functions
4 *
5 * Maintainer: Park Jiwoo
6 *
7 * Copyright (C) 2024 Park-Jiwoo
8 *
9 */
10#include "kernel_pr_he.h"
11#include <unistd.h>
12
13void kernel_putchar(char c)
14{
15 write(1, &c, 1);
16}
17
18
19// 인라인 어셈블리언어.
20// 인텔전용 어셈블리 문법임.
21// 맥에선 돌아가지 않기 때문에 이 부분은 주석 처리.
22// ---- Intel Assembly
23// -----------------------------------------------------------
24// void az_putchar(char c)
25// {
26// int dword_char;
27// dword_char = (char)c;
28
29// asm volatile(
30// ".intel_syntax noprefix;"
31// "mov r10,rsp;" // save rsp.
32// "sub rsp,8;" // space for buffer, align by 8.
33// "mov [rsp],al;" // store the character into buffer.
34// "mov edi,1;" // STDOUT.
35// "mov rsi,rsp;" // pointer to buffer.
36// "mov edx,1;" // string length in bytes.
37// "mov eax,1;" // WRITE.
38// "syscall;" // clobbers rcx & r11.
39// "mov rsp,r10;" // restore rsp.
40// ".att_syntax prefix;"
41// /* outputs */
42// :
43// /* inputs: eax */
44// : "b"(dword_char)
45// /* clobbered regs */
46// : "rcx", "rdx", "rsi", "rdi", "r10", "r11");
47// }
void kernel_putchar(char c)
Definition az_putchar.c:13