Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifdef __GNUC__
- ///////////////////////////////////////////////////////// -masm=intel
- char* asm_strcpy(char *psz1, const char *psz2) //
- {
- __asm(" mov esi , %1 ;"
- " mov edi , %0 ;"
- " L_01: mov al , [esi] ;"
- " mov [edi], al ;"
- " or al , 0 ;"
- " jz L_02 \n\t" // Так тоже можно завершить строку.
- " inc esi ;"
- " inc edi ;"
- " jmp L_01 ;"
- " L_02: ;"
- // - - - - - - - - - - - - - - - -
- // "m" = memory
- :: "m"(psz1), "m"(psz2)
- : "%eax", "%esi", "%edi" // Регистры, которые нужно восстановить после использования.
- );
- return psz1;
- }
- ///////////////////////////////////////////////////////// -masm=intel
- char* asm_strcat(char *psz1, const char *psz2) //
- {
- __asm(
- " mov edi , %0 ;"
- " dec edi ;"
- " L_00: inc edi ;"
- " mov al , [edi] ;"
- " or al , 0 ;"
- " jnz L_00 ;"
- " mov esi , %1 ;"
- " L_11: mov al , [esi] ;"
- " mov [edi], al ;"
- " or al , 0 ;"
- " jz L_22 \n\t" // Так тоже можно завершить строку.
- " inc esi ;"
- " inc edi ;"
- " jmp L_11 ;"
- " L_22: ;"
- // - - - - - - - - - - - - - - - -
- // "m" = memory
- :: "m"(psz1), "m"(psz2)
- : "%eax", "%esi", "%edi" // Регистры, которые нужно восстановить после использования.
- );
- return psz1;
- }
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement