私はこれらの2つのファイルを持っています.1つは.c
であり、1つは.s
です。これらは単なるテストファイルなので、ARMスクリプトを使用してCのハングアップを得ることはできますが、私の人生ではそれらを一緒に働かせることはできません。私はこれをVisual StudioやVSコード(あるいはもしあれば他のIDE)を使って簡単にできるかどうか疑問に思っていました。ここで Visual Studioを使用してARMスクリプトでCコードを実行できますか?
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 */
}
現在、私はそれらをリンクするために使用してきた奇妙なJavaプログラムは私にエラー
を与えています"D:\Joe\College Stuff\CS 252\add.s:1: Error: bad instruction ` .global add2'"
ヘルプ
部分はファイルのエンコーディング問題のように見える....インデントやドンするスペースを使用してみてください」どのようなことが起こっているかを見てください。どのような "奇妙なJavaプログラム"?ご指定ください! – rickythefox
これは "ARMスクリプト"ではありません。ARMアセンブリコードのように見えます(ただし、特定の構文に慣れていませんが、AT&TとIntelスタイルなど、同じ基本アセンブリ言語の構文が異なります)。 – Dai
ここではVisual Studioは役に立ちません。あなたは、アセンブラを実行して、ARMアセンブリファイルを実行可能なARMオブジェクトファイルに変換し、Cプログラムと静的にリンクする方法を学ぶ必要があります。 Visual StudioのVisual C++コンポーネントは実際にはCのツールチェーンではありません(C99で確認さえしていません)。コマンドラインツールのみを使用し、教師/教授から指示を求めてください。また、あなたはWindowsを使用することを意味していますか?この種の作業は、クロスコンパイル機能のためにLinuxシステムで行うのが最善です。 – Dai