【问题标题】:How can I convert this C code into Assembly IA32?如何将此 C 代码转换为程序集 IA32?
【发布时间】:2015-07-07 05:08:54
【问题描述】:

我想知道是否有一种快速的方法可以将此代码从 IA32 转换为程序集!

void function1(char trs[], int let[26]) {
    int i;
    int ind;

    int x = trs[i];

    for(i=0; trs[i]!='\0'; i++) {
        if (x>='a' && x<='z')
            ind = x - 'a';  
            let[ind]++;

        if (x>='A' && x<='Z')
            ind=x - 'A';

        let[ind]++;   
    }
}

【问题讨论】:

  • 使用 C 编译器!他们就是这样做的!
  • 这当然是可能的,但我怀疑它会很快,除非你非常了解 IA32 组装。此外,我怀疑很多人能够比编译器更好地手动优化它,如果这是你想要的。如果是为了学业,那么您应该自己做,如果遇到问题,请回到这里尝试。
  • 另请注意,您缺少一些花括号。这不是缩进很重要的python;)
  • 该代码没有意义。您在循环之外将x 分配给trs[i],甚至在i 被分配一个值之前。 x 在循环中永远不会被修改,因此无论您在该循环中做什么,每次迭代都会对相同的数组元素执行任何操作。不知道您认为您的代码会做什么,但几乎可以肯定您编写的内容不会达到您的预期。

标签: c assembly converter


【解决方案1】:

假设您使用的是gcc,您可以只使用gcc -S main.c -o main.s
这输出汇编代码(GAS 风格)的速度比任何人都快:)

但是说真的,如果您想手动转换它,我建议您将代码转换成简单的英语,然后再转换成汇编。

【讨论】:

    猜你喜欢
    • 2017-06-22
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 2018-03-30
    相关资源
    最近更新 更多