【发布时间】:2014-10-17 10:37:58
【问题描述】:
我是 Linux、汇编编程 (GAS) 和英语的新手。所以,对不起,如果我写错了。我希望谷歌翻译能帮助我把它写得还不错。
我想知道如何在不调用任何库(如printf())的函数的情况下将存储在.data 部分中的一组数字写入文本文件,并通过仅汇编程序来执行此操作。我不想要现成的解决方案。我想知道在我的 write 调用之后 Linux 内核做了什么。这个怎么运作?它是如何设计的?
我正在尝试将数字列表打印到 STDOUT,但我在终端中收到一个奇怪的符号。我认为这是因为我不明白如何正确使用 write 系统调用。
这就是我现在得到的
.section .data
list: .long 12, 31, 42
.section .text
.globl _start
_start:
movl $4, %eax
movl $1, %ebx
movl $list, %ecx
movl $12, %edx
int $0x80
movl $1, %eax
movl $0, %ebx
int $0x80
此代码适用于.ascii "Hello world\0",但不适用于数字列表。
【问题讨论】:
-
这是一个非常广泛的主题,需要相当多的背景知识才能理解,我怀疑你没有。你可能想把它分解成一口大小的块,向我们展示你到目前为止所做的努力以及你遇到的困难。
-
我读过 Jonathan Bartlett 的“从头开始编程”。哪个更好?
标签: assembly linux-kernel system-calls gnu-assembler