我想在Linux上用x86_64汇编语言实现冒泡排序和快速排序,但遇到了很多麻烦。我不能让一个基本的交换例程(swapij)工作。任何帮助将不胜感激。谢谢该计划是建立在:
yasm -f elf64 -g dwarf2 -o testStr.obj testStr.asm gcc -g -z noexecstack testStr.obj -o testStr
0s0u357o1#
section .data pTempi db 64 pTempj db 64
这些db只是旁边的一个字节每(预装值64)。你需要的是这样的东西:
db
section .bss pTempi resb 64 pTempj resb 64
strcpy
mov rcx, r8 lea rdi, [pTempi] call getElement ; rdi contains str from array[i] strcpy
您提供了目的地址和源地址,但我没有看到您将实际长度传递给strcpy。另外,要特别注意你写的评论。从 getElement 返回时,RSI指向数组第i个64字节记录中的字符串。像“contains str”这样的提及肯定是令人困惑的/错误的,因为寄存器不包含字符串中的任何字符。相反,寄存器包含指向某个字符串的指针。
1条答案
按热度按时间0s0u357o1#
您没有必要的缓冲区
这些
db
只是旁边的一个字节每(预装值64)。你需要的是这样的东西:你的
strcpy
不需要被告知要拷贝多少字节吗?您提供了目的地址和源地址,但我没有看到您将实际长度传递给
strcpy
。另外,要特别注意你写的评论。从 getElement 返回时,RSI指向数组第i个64字节记录中的字符串。像“contains str”这样的提及肯定是令人困惑的/错误的,因为寄存器不包含字符串中的任何字符。相反,寄存器包含指向某个字符串的指针。