【发布时间】:2018-08-12 06:40:38
【问题描述】:
SEGMENT .data ; nothing here
SEGMENT .text ; sauce
global _start
_start:
pop ECX ; get ARGC value
mov EAX, 4 ; sys_write()
mov EBX, 1 ; /dev/stdout
;^^^^^^^^^^^
mov EDX, 1 ; a single byte
int 0x80
mov EAX, 1 ; sys_exit()
mov EBX, 0 ; return 0
int 0x80
SEGMENT .bss ; nothing here
为什么 mov EBX, ""1"" ; /开发/标准输出? 我在哪里可以找到“1”的文件?
【问题讨论】:
-
("在 C 中,stdin、stdout 和 stderr 是 FILE*,在 UNIX 中分别映射到文件描述符 0、1 和 2 ." - from this answer)
-
这是对历史的一个很好的调查:来自维基百科的Standard streams。这篇文章追溯到 1950 年代并讨论了 Unix 设计,并解释了为什么流被标准化以及它们的价值。