『tiny 6410ヌードマシンプログラム』第三章:基礎アセンブリtest 1
2467 ワード
一、CodeWarrior for RVDS建設工事
1.File->New->Project
ARM EXecutable Imageを選択します.Project name記入test 1.mcp,Location記入C:work6410test 1
二、CodeWarrior for RVDSソースファイルの追加
test1.mcpウィンドウの空白を右クリックし、Add Files、test 1を選択します.s.
三、CodeWarrior for RVDSのDebugRel Settings
Edit->DebugRel Setting
1.ターゲット設定
Target Settings:Linker ARM RealView Linkerを選択します.Post-LinkはARM RealViews FromELFを選択します.
2.Language Settings(コンパイル言語)設定
RealView Assembler->Target:Architecture or選択ARM 176 JZF-S.
RealView Compiler(C言語)->Target:Architecture or Processor選択ARM 176 JZF-S.
3.Linker(リンク)設定
RealView Linker->Output:Linkertype選択Simple;SimpleイメージのROベースは0 x 50200000を記入する.
RealView FromELF->Output:Output format選択Plain binary;Output file name選択test 1.bin.
4.デバッガ設定
RealViewDebugger->Choose Debugger:Choose a Debugger選択AXD(ARM eXtended Debugger).
RealView Runner->Choose Debugger:Choose a Debugger選択AXD(ARM eXtended Debugger).
四、CodeWarrior for RVDSコンパイル
Project->make
五、CodeWarrior for RVDS調出AXD調試器
Project->Dwbug
六、AXD分析
1.説明:AXDに必要なのはC:work6410test 1Debugtest 1.axf;
2.AXDオープンレジスタとメモリ表示
Processor Views->Rigister;
Processor Views->Memory.
3.ソースプログラムを見てみましょう.s
説明:
ARM時RISC構造で、メモリからCPUまでのデータの移動はLDR/STR指令でしかできない.
MOV命令はレジスタ間の移動データのみ/即時数をレジスタに移動する.
コンパイルとコネクタディレクトリ:
C:\Program Files\ARMRVDS\RVCT\Programs\2.2\349\win_32-pentium\
===================================================================================================================================
RVDSの統合開発環境を使用しない場合、以下はWindowプラットフォームarmccコンパイラのDOSでのMakefileです.
1.File->New->Project
ARM EXecutable Imageを選択します.Project name記入test 1.mcp,Location記入C:work6410test 1
二、CodeWarrior for RVDSソースファイルの追加
test1.mcpウィンドウの空白を右クリックし、Add Files、test 1を選択します.s.
三、CodeWarrior for RVDSのDebugRel Settings
Edit->DebugRel Setting
1.ターゲット設定
Target Settings:Linker ARM RealView Linkerを選択します.Post-LinkはARM RealViews FromELFを選択します.
2.Language Settings(コンパイル言語)設定
RealView Assembler->Target:Architecture or選択ARM 176 JZF-S.
RealView Compiler(C言語)->Target:Architecture or Processor選択ARM 176 JZF-S.
3.Linker(リンク)設定
RealView Linker->Output:Linkertype選択Simple;SimpleイメージのROベースは0 x 50200000を記入する.
RealView FromELF->Output:Output format選択Plain binary;Output file name選択test 1.bin.
4.デバッガ設定
RealViewDebugger->Choose Debugger:Choose a Debugger選択AXD(ARM eXtended Debugger).
RealView Runner->Choose Debugger:Choose a Debugger選択AXD(ARM eXtended Debugger).
四、CodeWarrior for RVDSコンパイル
Project->make
五、CodeWarrior for RVDS調出AXD調試器
Project->Dwbug
六、AXD分析
1.説明:AXDに必要なのはC:work6410test 1Debugtest 1.axf;
2.AXDオープンレジスタとメモリ表示
Processor Views->Rigister;
Processor Views->Memory.
3.ソースプログラムを見てみましょう.s
COUNT EQU 0x50003100 ; COUNT, 0x50003100
AREA start,CODE,READONLY ;
ENTRY ;
CODE32 ; 32 ARM
START
LDR R1,=COUNT ; : COUNT R1
MOV R0,#0 ; : 0 R0
STR R0,[R1] ; :LDR , R0 R1
LOOP
LDR R1,=COUNT ; : COUNT R1
LDR R0,[R1] ; :STR , R1 R0
ADD R0,R0,#1 ; : R0 1 R0
STR R0,[R1] ; :LDR , R0 R1
B LOOP
END
説明:
ARM時RISC構造で、メモリからCPUまでのデータの移動はLDR/STR指令でしかできない.
MOV命令はレジスタ間の移動データのみ/即時数をレジスタに移動する.
コンパイルとコネクタディレクトリ:
C:\Program Files\ARMRVDS\RVCT\Programs\2.2\349\win_32-pentium\
===================================================================================================================================
RVDSの統合開発環境を使用しない場合、以下はWindowプラットフォームarmccコンパイラのDOSでのMakefileです.
all:
armasm -o test.o test.s --debug --keep --cpu=ARM1176JZF-S
armlink -o test.axf test.o --ro_base=0x50200000
fromelf -o test.bin --bin test.axf
clean:
del *.o *.axf *.bin
が完了したらAXDの下で、このファイルtestをloadします.axfでいいです.