; The OS/K Team licenses this file to you under the MIT license. ; See the LICENSE file in the project root for more information. ; ; void strrev(char *buf, const char *str) ; strrev: test b[ax1], b[ax1] cmovz b[ax0], 0 cretz ; save str's location mov rdx, ax1 ; go to str's end, just before ; the null terminator .1: test b[ax1+1], b[ax1+1] cincnz ax1 cjmpnz .1 .2: ; copy, going backward though str ; and forward through buf mov b[ax0], b[ax1] cmp ax1, rdx cmovz b[ax0+1], 0 cretz inc ax0 dec ax1 jmp .2