将c语言转换为IA32汇编语言

将c语言转换为IA32汇编语言,c,assembly,C,Assembly,我写了一个c代码:将整数转换成字符串,每3位有一个逗号,谁能给我一个如何将它转换成汇编语言的提示??? 我只想简单地把它转换成汇编语言!无法使用其他库调用 #include <stdio.h> char *my_itoa(int n, char *buf) { int i, j, k=0, l=0; char tmp[32] = {0}; i = n; do { j = i%10; i = i/10; sprintf(tmp+k, "%d",

我写了一个c代码:将整数转换成字符串,每3位有一个逗号,谁能给我一个如何将它转换成汇编语言的提示??? 我只想简单地把它转换成汇编语言!无法使用其他库调用

 #include <stdio.h>
char *my_itoa(int n, char *buf)
 {    
int i, j, k=0, l=0;
char tmp[32] = {0};

 i = n;
do {
    j = i%10;
    i = i/10;
    sprintf(tmp+k, "%d", j); 
    k++;
    l++;
    if (i!=0 && l%3 == 0) {
        sprintf(tmp+k, ",");
        k++;
        l = 0;
    }
}while(i);

for (k--,i=0; i<=k; i++) {
    buf[i] = tmp[k-i];
}

return buf;}
如果您的编译器是gcc,则建议使用一种很好的方法来生成比普通汇编更易于阅读的组合C/汇编语言文件。他们使用C++,而只是用GCC:< /P>替换C++。
#include <stdio.h>
#include <locale.h>

int main() 
{
    int num = 12345678;
    setlocale(LC_NUMERIC, "en_US");
    printf("%'d\n", num);
    return 0;
}

符合1997年发布的SUSv2 Single Unix规范版本2的C编译器可以通过使用区域设置标志说明符更简单地完成所需的工作。下面是使用gcc的示例C代码:

#include <stdio.h>
#include <locale.h>

int main() 
{
    int num = 12345678;
    setlocale(LC_NUMERIC, "en_US");
    printf("%'d\n", num);
    return 0;
}
代码非常简单,因为所有的艰苦工作都在printf中完成:


例如,您可以使用gcc编译它,并使用-S标志转储生成的程序集。请注意,这可能非常复杂,因为sprintf可能是一个动态库函数。@ChrisStratton,对库函数的调用看起来像调用sprintf。它到底是如何工作的??打电话给sprintf,找出sprintf的位置是a的工作。有关详细信息,请参阅链接。
.fmt:
        .string  "%'d\n"
        ;  number to be converted is in %esi
        movl    $.fmt, %edi
        movl    $0, %eax
        call    printf