将 char 从字符串替换为另一个字符串的 char 的 asm 等价物是什么?

What's the asm equivalent of replacing a char from a string to a char of another string?

我正在尝试编写 strcat 代码来学习汇编。我使用 64 位汇编和 Intel 语法在 mac osx 和 nasm 上编码。 到目前为止,这是我的结果:

section .text
    global _ft_strcat

_ft_strcat:
    mov rax, rdi
    mov rbx, rsi

loop_s1:
    cmp byte[rax], 0
    jz copy_str
    inc rax
    jmp loop_s1

copy_str:
    cmp byte[rbx], 0
    jz end
    mov byte[rax], byte[rbx]
    inc rax
    inc rbx
    jmp copy_str

end:
    mov byte[rax], 0
    ret

mov byte[rax], byte[rbx] 给我这个编译错误:

ft_strcat.s:17: error: invalid combination of opcode and operands

很难获得关于汇编的有用信息,因为有太多不同的语法。

没有mov需要2个内存操作数。参见instruction set reference。可以遍历一个字节大小的寄存器,例如:

mov dl, [rax]
mov [rbx], dl

另请注意,调用约定要求保留一些寄存器,包括 rbx。您可以改用 rcx,或者 save/restore。