'arm-none- linux -gnueabi-g cc' против разницы в компиляции 'arm- linux -gnueabi-g cc' - PullRequest
0 голосов
/ 28 апреля 2020

Я пишу C программу с встроенной функцией сборки, которая сравнивает две строки, если они совпадают.

Когда я компилирую это с помощью 'arm-none- linux -gneabi-g cc 'и' arm- linux -gnueabi-g cc ', результаты разные. Разница, кажется, происходит от ключевого слова «нет», которое является местом для [продавца] согласно поиску Google.

Мои вопросы

  1. Является ли это причиной различия в результатах ?
  2. Если это так, что установлено как [vendor] в 'arm- linux -gnueabi-g cc'?

Мой код:

#include <stdio.h>

int * intoneplus(int * i);
char * charoneplus(char * c);

int my_strcmp(const char *src1, const char *src2);

int main(void)

{
    const char *a = "Hello world!";
    const char *a1 = "Hello world!";
    const char *a2 = "hello aorld!";

    if(my_strcmp(a, a1)==0)
        printf("a and a1 are same sentence\n");
    else
        printf("a and a1 are different\n");

    if(my_strcmp(a, a2)==0)
        printf("a and a2 are same sentence\n");
    else
        printf("a and a2 are different\n");

    return 0;

}

int my_strcmp(const char *src1, const char *src2)
{
    int ch1, ch2, ret=0;
    __asm__ (
        "loop:\n\t"         
        "LDRB %[ch1], [%[src1]], #1 \n\t LDRB %[ch2], [%[src2]], #1\n\t" 
        "CMP %[ch1], %[ch2]\n\t"                         
        "MOVNE %[ret], #1\n\t BNE done \n\t"                     
        "CMP %[ch1], #0\n\t BNE loop\n\t"               
        "done:\n\t"                         

        :[ret]"=r"(ret)                         
        :[src1]"r"(src1),[src2]"r"(src2),[ch1]"r"(ch1),[ch2]"r"(ch2)    

    );
    return ret;
}

Результаты компиляции и выполнения:

@ubuntu:~/test$ arm-linux-gnueabi-gcc -o practice2.out practice2.c -static
@ubuntu:~/test$ qemu-arm practice2.out
464281
a and a1 are different
1
a and a2 are different
@ubuntu:~/test$ arm-none-linux-gnueabi-gcc -o practice2.out practice2.c -static
@ubuntu:~/test$ qemu-arm practice2.out
0
a and a1 are same sentence
1
a and a2 are different
...