『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
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でいいです.