可以,但必須直接調用作業系統系統調用(System Call),繞過 C 標準庫。
應用程式
│
▼
C 標準庫 (printf, scanf, fopen...) ← 封裝、緩衝、格式化
│
▼
作業系統核心 系統調用 (write, read, open, close...) ← 真正執行 I/O
│
▼
硬體驅動 / 設備控制器
/* 相當於 write(1, "Hello\n", 6) */
section .data
msg db "Hello, World!", 10
len equ $ - msg
section .text
global _start
_start:
mov rax, 1 ; sys_write
mov rdi, 1 ; fd=stdout
mov rsi, msg ; buffer
mov rdx, len ; count
syscall ; 觸發系統調用
mov rax, 60 ; sys_exit
xor rdi, rdi
syscall
C 語言內嵌彙編同理:
#include <unistd.h> // 仍包含頭文件聲明 syscall 號
// 或直接用 syscall(1, 1, "Hello\n", 6);
putchar/getchar。標準庫是「系統調用的便利包裝」,離開它仍可編程,但需直面底層複雜度。