我真的很困惑这一个。它是strcpy还是strcat的实现。另外,我知道第一个循环搜索字符串的null终止符,第二个循环做同样的事情,但也复制了字符串,但我很难理解整个函数在做什么。是将存储在%rdi的字符串复制到另一个位置(strcpy)还是将存储在%rsi的字符串添加到%rdi的末尾(strcat)。
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(),因为它首先跳过现有的字符串,然后复制。
strcat()
1条答案
按热度按时间f2uvfpb91#
使用伪C注解
将其重写为C代码:
所以我们看到这是
strcat()
,因为它首先跳过现有的字符串,然后复制。