从内存地址复制字辅助(汇编)

标签 c assembly mips lc3

我正在尝试从内存中复制一些单词并使用汇编将其保存到另一个内存地址。 我正在尝试为其编写代码,但我不确定其中的某些部分。我将简要描述我想要做什么。

源地址、目标地址和要复制的字数是函数的输入参数。

最佳答案

从您的描述来看,它听起来像常规的 memcpy,只不过您指定了要复制的字数而不是字节数。不确定整个堆栈缓冲区的想法来自哪里(?)。

类似这样的操作会将单词从源复制到目标地址:

sll $a2,$a2,2
addu $a2,$a1,$a2  ; $a2 = address of first byte past the dest buffer
Loop:
    lw $t0,0($a0)
    sw $t0,0($a1)
    addiu $a0,$a0,4
    addiu $a1,$a1,4
    bne $a1,$a2,Loop
    nop

编辑:如果源缓冲区和目标缓冲区未在字边界上对齐,则需要使用 lb/sb 来避免数据对齐异常。

关于从内存地址复制字辅助(汇编),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11771353/

相关文章:

string - 如何在mips程序集中迭代字符串

floating-point - MIPS:除法算法(IEEE-754 格式的有效数除法)对最后 4-5 位 (LSB) 给出了错误的答案

c++ - 多态性是否适用于在 C 中传递的 C++ 对象引用?

c - 为什么 malloc 在 "b"和 "b[0]"上给出不同的地址?

在单元测试期间控制定义的值

gcc - 用gcc/mingw编译intel程序集

windows - 崩溃转储意味着在顺序指令之间更改了寄存器值

c - 在哪里可以找到退出程序的源代码

下面这段代码的 C++ 等效项 (sprintf)

assembly - 从 MIPS 程序集中的用户输入读取文件名