我正在實現一個彙編函數來反轉一個字符串。這個函數在C中被調用,簽名爲void strrev(char *str) ;
在函數內部,似乎一切正常,使用gdb進行調試,但在調用strrev()
之後打印字符串的內容只是輸出空字符串。從參考參數c調用匯編函數
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
的main.c
void strrev(char *str) ;
int main() {
char *str1;
str1 = strdup("Hello World") ;
strrev(str1) ;
printf("str1 = \"%s\"\n", str1) ;
}