如何将x86程序集中的寄存器内容打印到控制台?我正在运行Linux

时间:2011-04-18 00:56:18

标签: assembly x86

我知道如何打印字符串,但关于打印整数的文档非常缺乏。我甚至不确定我的问题是否正确。

2 个答案:

答案 0 :(得分:1)

如果您可以链接C库,则可以调用printf函数。在大多数x86系统上,可变参数函数使用cdecl调用约定 - 参数从右到左被推入堆栈(因此,首先是寄存器值,然后是包含%d的字符串),你必须在通话结束后清理堆栈(添加到%esp)。

有关详细信息,请指定您所使用的系统(如果您无法链接到C库,则需要手动生成一个字符串,以将其转换为您要打印的任何基础。< / p>

答案 1 :(得分:0)

假设您正在使用printf(syscall或int $ 0x80),则必须查找gcc varargs规范。你想要做的是在字符串中的某处插入%i并将寄存器作为第一个vararg参数传递。

我不知道如何在系统调用中处理varargs,但是只需创建一个C包装函数来打印数字并将其与汇编程序链接起来会容易得多。