小编Ani*_*ili的帖子

地址清理程序说存在段错误,但 valgrind 和 gdb 说没有?

我目前正在学习一门课程,要求我编写汇编代码,准确地说是 x86-64 AT&T 语法汇编代码。下面是 ac 文件,其中包含我必须编写其汇编代码的函数“bubble”的函数定义。

#include<stdio.h>
#include<stdlib.h>

void bubble(int* arr, int len);

int main(){
    int n;
    scanf("%d", &n);
    int* arr = malloc(sizeof(int)*n);
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
    }
    bubble(arr, n);
    for (int i = 0; i < n; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("\n");
    free(arr);
}
Run Code Online (Sandbox Code Playgroud)

下面是函数 bubble 的汇编代码,

.global bubble
.text

bubble:
    movq $-1, %rcx
.L1:
    incq %rcx
    movl 4(%rdi,%rcx,4), %eax
    cmpl (%rdi,%rcx,4), %eax
    jge .T1
    movl (%rdi,%rcx,4), %eax
    movl …
Run Code Online (Sandbox Code Playgroud)

assembly gcc x86-64 segmentation-fault address-sanitizer

3
推荐指数
1
解决办法
310
查看次数