gpt4 book ai didi

使用引用参数从 c 调用汇编函数

转载 作者:太空宇宙 更新时间:2023-11-04 07:28:35 26 4
gpt4 key购买 nike

我正在实现一个汇编函数来反转字符串。此函数在 C 中以签名 void strrev(char *str) ; 在函数中似乎一切正常,使用 gdb 进行调试,但在调用 后打印字符串的内容>strrev() 只打印空字符串。

getlast:
cmp byte [edi], 0
je reverse_string
inc edi
inc ecx
jmp getlast

reverse_string:
cmp esi, edi
jae reversed
mov al, [esi]
mov bl, [edi]
mov [esi], bl
mov [edi], al
inc esi
dec edi

jmp reverse_string

主.c

void strrev(char *str) ;

int main() {
char *str1;

str1 = strdup("Hello World") ;
strrev(str1) ;
printf("str1 = \"%s\"\n", str1) ;
}

最佳答案

这个

    cmp     byte [edi], 0
je reverse_string

会导致这个

    mov     bl, [edi]
mov [esi], bl

在字符串的开头写0。

您需要从字符串终止符后退。

关于使用引用参数从 c 调用汇编函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16016829/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com