assembly 解密简单的汇编代码:它是strcpy还是strcat?

d4so4syb  于 2023-05-07  发布在  其他
关注(0)|答案(1)|浏览(159)

我真的很困惑这一个。它是strcpy还是strcat的实现。另外,我知道第一个循环搜索字符串的null终止符,第二个循环做同样的事情,但也复制了字符串,但我很难理解整个函数在做什么。是将存储在%rdi的字符串复制到另一个位置(strcpy)还是将存储在%rsi的字符串添加到%rdi的末尾(strcat)。

f2uvfpb9

f2uvfpb91#

使用伪C注解
将其重写为C代码:

char* func(char* rsi, char *rdi) {
    char *dest = rdi;   // rdx 
    char *src  = rsi;   // rsi
    char c;

    // Find first '\0'
    if (*dest != 0)
        while (*++dest != 0)
            ;

    // Copy from src until '\0' reached
    do {
        c = *src++;
        *dest++ = c;
    } while (c != 0)

    return rdi; // rax
}

所以我们看到这是strcat(),因为它首先跳过现有的字符串,然后复制。

相关问题