我知道如何打印字符串,但关于打印整数的文档非常缺乏。我甚至不确定我的问题是否正确。
答案 0 :(得分:1)
如果您可以链接C库,则可以调用printf
函数。在大多数x86系统上,可变参数函数使用cdecl
调用约定 - 参数从右到左被推入堆栈(因此,首先是寄存器值,然后是包含%d
的字符串),你必须在通话结束后清理堆栈(添加到%esp
)。
有关详细信息,请指定您所使用的系统(如果您无法链接到C库,则需要手动生成一个字符串,以将其转换为您要打印的任何基础。< / p>
答案 1 :(得分:0)
假设您正在使用printf(syscall或int $ 0x80),则必须查找gcc varargs规范。你想要做的是在字符串中的某处插入%i并将寄存器作为第一个vararg参数传递。
我不知道如何在系统调用中处理varargs,但是只需创建一个C包装函数来打印数字并将其与汇编程序链接起来会容易得多。