2017-10-03 3 views
1

donc j'ai ces deux fichiers, l'un est un .c et l'autre est un .s. Ce ne sont que des fichiers de test, donc je peux apprendre à travailler avec des scripts ARM, mais pour la vie de moi, je ne peux pas les faire travailler ensemble. Je me demandais si je pourrais rendre cela plus facile en utilisant Visual Studio ou VS code (ou tout autre IDE si vous le savez).Visual Studio peut-il être utilisé pour exécuter du code C avec des scripts ARM?

Voici mon code:

ARM

.global add2 
add2: 
    stmfd sp!, {v1-v6, lr} @ 'standard' entry, save registers on the stack 
    add a1, a1, a2   @ do the addition requested 
    ldmfd sp!, {v1-v6, pc} 

C

#include <stdio.h> /* standard input and output */ 
#include <stdlib.h> /* standard library */ 
extern int add2(int i, int j); /* tell the compiler that the routine is not defined here */ 
int main(int argc, char * argv[]) /* entry point to the program */ 
{ 
    int i, j; /* declare the variable types */ 
    int answer; 
    i = 5; /* give the variables values */ 
    j = 20; 
    answer = add2(i, j); /* call the assembly language routine */ 
    printf("result is : %d\n", answer); /* print out the answer */ 
    exit(0); /* leave the driver program */ 
} 

Actuellement, le programme java bizarre que je l'ai utilisé pour les relier me donne l'erreur

"D:\Joe\College Stuff\CS 252\add.s:1: Error: bad instruction ` .global add2'"

Toute aide serait apprécié

+1

Ce ï »¿partie ressemble fichier encodage question .... Essayez d'utiliser des espaces pour le retrait ou n » t indent du tout et voir ce qui se passe. Quel "programme java bizarre"? Veuillez préciser! – rickythefox

+2

Ce n'est pas un "script ARM" - il ressemble au code d'assemblage ARM (bien que je ne connaisse pas la syntaxe particulière - il existe différentes syntaxes pour le même langage d'assemblage sous-jacent, par exemple AT & T vs Intel). – Dai

+1

Visual Studio ne vous aidera pas ici - vous devez apprendre à exécuter un assembleur pour convertir votre fichier d'assemblage ARM en un fichier objet ARM exécutable et le lier statiquement avec votre programme C. Le composant Visual C++ de Visual Studio n'est pas réellement une chaîne d'outils C (il ne confirme même pas avec C99). Vous devez utiliser uniquement des outils de ligne de commande et demander des instructions à votre tuteur/professeur. Etes-vous sûr que vous êtes censé utiliser Windows? Ce genre de travail est mieux fait sur un système Linux pour leurs capacités de compilation croisée. – Dai

Répondre

3

Pour corriger cette erreur, configurez votre éditeur pour qu'il n'insère pas de nomenclature au début du fichier. Vous pouvez peut-être le faire en sélectionnant "enregistrer sous", puis en sélectionnant un encodage différent (par exemple "ASCII" ou "UTF-8 no BOM" ou quelque chose comme ça). Si vous pouviez nous dire quel éditeur vous avez utilisé pour créer le fichier d'assemblage ARM, je pourrais vous fournir une aide plus spécifique.

+0

J'ai utilisé le bloc-notes pour créer le fichier initial, mais à partir de maintenant, je vais probablement utiliser le code VS – wjmccann

+0

@wjmccann VS code devrait utiliser le bon codage par défaut. – fuz