import Ġr azor v ine . k sim 6 5 . Cpu 6 5 0 2 Ċ import Ġr azor v ine . k sim 6 5 . Cpu 6 5 C 0 2 Ċ import Ġr azor v ine . k sim 6 5 . Dis assembler Ċ import Ġr azor v ine . k sim 6 5 . components . Ram Ċ import Ġkotlin . test .* ĊĊ Ċ class ĠTest Dis assembler Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Dis assemble All 6 5 0 2 Op codes () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcpu Ġ= ĠC pu 6 5 0 2 () ĊĠĠĠĠĠĠĠ Ġval Ġdis assembler Ġ= ĠDis assembler ( cpu ) ĊĠĠĠĠĠĠĠ Ġval Ġmemory Ġ= ĠRam ( 0 , Ġ 0 xffff ) ĊĠĠĠĠĠĠĠ Ġval Ġbin file Ġ= Ġjava Class . class Loader . getResource AsStream (" dis as sem _ instr _ test . prg ") ?. read Bytes () !! ĊĠĠĠĠĠĠĠ Ġmemory . load ( bin file , Ġ 0 x 1 0 0 0 - 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdis assembler . dis assemble ( memory . data , Ġ 0 x 1 0 0 0 .. 0 x 1 2 2 1 , Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 5 6 , Ġresult . first . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 1 2 2 2 , Ġresult . second ) ĊĠĠĠĠĠĠĠ ĠassertEquals ("\ $ 1 0 0 0 ĠĠ 6 9 Ġ 0 1 ĠĠĠĠĠĠ Ġadc Ġ Ġ# \$ 0 1 ", Ġresult . first [ 0 ]) ĊĊĠĠĠĠĠĠĠ Ġval Ġreference Ġ= Ġjava Class . class Loader . getResource (" dis as sem _ ref _ output . txt ") ?. read Text () !!. trim (). lines () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 5 6 , Ġreference . size ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( line Ġin Ġresult . first . zip ( reference )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( line . first Ġ!= Ġline . second ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" dis as semb led Ġinstruction Ġmismatch : Ġ'${ line . first }', Ġexpected Ġ'${ line . second }' ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Dis assemble Rock well 6 5 C 0 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcpu Ġ= ĠC pu 6 5 C 0 2 () ĊĠĠĠĠĠĠĠ Ġval Ġdis assembler Ġ= ĠDis assembler ( cpu ) ĊĠĠĠĠĠĠĠ Ġval Ġmemory Ġ= ĠRam ( 0 , Ġ 0 x 0 fff ) ĊĠĠĠĠĠĠĠ Ġval Ġsource Ġ= Ġjava Class . class Loader . getResource (" dis as sem _ r 6 5 c 0 2 . bin ") ?. read Bytes () !! ĊĠĠĠĠĠĠĠ Ġmemory . load ( source , Ġ 0 x 0 2 0 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġdis as sem Ġ= Ġdis assembler . dis assemble ( memory . data , Ġ 0 x 0 2 0 0 .. 0 x 0 2 5 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 2 5 1 , Ġdis as sem . second ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdis as sem . first . join ToString ("\ n ") ĊĠĠĠĠĠĠĠ ĠassertEquals (""" ${ '$ '} 0 2 0 0 ĠĠ 0 7 Ġ 1 2 ĠĠĠĠĠĠ Ġr mb 0 Ġ Ġ${ '$ '} 1 2 Ċ ${ '$ '} 0 2 0 2 ĠĠ 1 7 Ġ 1 2 ĠĠĠĠĠĠ Ġr mb 1 Ġ Ġ${ '$ '} 1 2 Ċ ${ '$ '} 0 2 0 4 ĠĠ 2 7 Ġ 1 2 ĠĠĠĠĠĠ Ġr mb 2 Ġ Ġ${ '$ '} 1 2 Ċ ${ '$ '} 0 2 0 6 ĠĠ 3 7 Ġ 1 2 ĠĠĠĠĠĠ Ġr mb 3 Ġ Ġ${ '$ '} 1 2 Ċ ${ '$ '} 0 2 0 8 ĠĠ 4 7 Ġ 1 2 ĠĠĠĠĠĠ Ġr mb 4 Ġ Ġ${ '$ '} 1 2 Ċ ${ '$ '} 0 2 0 a ĠĠ 5 7 Ġ 1 2 ĠĠĠĠĠĠ Ġr mb 5 Ġ Ġ${ '$ '} 1 2 Ċ ${ '$ '} 0 2 0 c ĠĠ 6 7 Ġ 1 2 ĠĠĠĠĠĠ Ġr mb 6 Ġ Ġ${ '$ '} 1 2 Ċ ${ '$ '} 0 2 0 e ĠĠ 7 7 Ġ 1 2 ĠĠĠĠĠĠ Ġr mb 7 Ġ Ġ${ '$ '} 1 2 Ċ ${ '$ '} 0 2 1 0 ĠĠ 8 7 Ġ 1 2 ĠĠĠĠĠĠ Ġs mb 0 Ġ Ġ${ '$ '} 1 2 Ċ ${ '$ '} 0 2 1 2 ĠĠ 9 7 Ġ 1 2 ĠĠĠĠĠĠ Ġs mb 1 Ġ Ġ${ '$ '} 1 2 Ċ ${ '$ '} 0 2 1 4 Ġ Ġa 7 Ġ 1 2 ĠĠĠĠĠĠ Ġs mb 2 Ġ Ġ${ '$ '} 1 2 Ċ ${ '$ '} 0 2 1 6 Ġ Ġb 7 Ġ 1 2 ĠĠĠĠĠĠ Ġs mb 3 Ġ Ġ${ '$ '} 1 2 Ċ ${ '$ '} 0 2 1 8 Ġ Ġc 7 Ġ 1 2 ĠĠĠĠĠĠ Ġs mb 4 Ġ Ġ${ '$ '} 1 2 Ċ ${ '$ '} 0 2 1 a Ġ Ġd 7 Ġ 1 2 ĠĠĠĠĠĠ Ġs mb 5 Ġ Ġ${ '$ '} 1 2 Ċ ${ '$ '} 0 2 1 c Ġ Ġe 7 Ġ 1 2 ĠĠĠĠĠĠ Ġs mb 6 Ġ Ġ${ '$ '} 1 2 Ċ ${ '$ '} 0 2 1 e Ġ Ġf 7 Ġ 1 2 ĠĠĠĠĠĠ Ġs mb 7 Ġ Ġ${ '$ '} 1 2 Ċ ${ '$ '} 0 2 2 0 ĠĠ 0 f Ġ 1 2 Ġ 2 a ĠĠĠ Ġb br 0 Ġ Ġ${ '$ '} 1 2 , Ġ${ '$ '} 0 2 4 d Ċ ${ '$ '} 0 2 2 3 ĠĠ 1 f Ġ 1 2 Ġ 2 7 ĠĠĠ Ġb br 1 Ġ Ġ${ '$ '} 1 2 , Ġ${ '$ '} 0 2 4 d Ċ ${ '$ '} 0 2 2 6 ĠĠ 2 f Ġ 1 2 Ġ 2 4 ĠĠĠ Ġb br 2 Ġ Ġ${ '$ '} 1 2 , Ġ${ '$ '} 0 2 4 d Ċ ${ '$ '} 0 2 2 9 ĠĠ 3 f Ġ 1 2 Ġ 2 1 ĠĠĠ Ġb br 3 Ġ Ġ${ '$ '} 1 2 , Ġ${ '$ '} 0 2 4 d Ċ ${ '$ '} 0 2 2 c ĠĠ 4 f Ġ 1 2 Ġ 1 e ĠĠĠ Ġb br 4 Ġ Ġ${ '$ '} 1 2 , Ġ${ '$ '} 0 2 4 d Ċ ${ '$ '} 0 2 2 f ĠĠ 5 f Ġ 1 2 Ġ 1 b ĠĠĠ Ġb br 5 Ġ Ġ${ '$ '} 1 2 , Ġ${ '$ '} 0 2 4 d Ċ ${ '$ '} 0 2 3 2 ĠĠ 6 f Ġ 1 2 Ġ 1 8 ĠĠĠ Ġb br 6 Ġ Ġ${ '$ '} 1 2 , Ġ${ '$ '} 0 2 4 d Ċ ${ '$ '} 0 2 3 5 ĠĠ 8 f Ġ 1 2 Ġ 1 5 ĠĠĠ Ġb bs 0 Ġ Ġ${ '$ '} 1 2 , Ġ${ '$ '} 0 2 4 d Ċ ${ '$ '} 0 2 3 8 ĠĠ 9 f Ġ 1 2 Ġ 1 2 ĠĠĠ Ġb bs 1 Ġ Ġ${ '$ '} 1 2 , Ġ${ '$ '} 0 2 4 d Ċ ${ '$ '} 0 2 3 b Ġ Ġaf Ġ 1 2 Ġ 0 f ĠĠĠ Ġb bs 2 Ġ Ġ${ '$ '} 1 2 , Ġ${ '$ '} 0 2 4 d Ċ ${ '$ '} 0 2 3 e Ġ Ġbf Ġ 1 2 Ġ 0 c ĠĠĠ Ġb bs 3 Ġ Ġ${ '$ '} 1 2 , Ġ${ '$ '} 0 2 4 d Ċ ${ '$ '} 0 2 4 1 Ġ Ġcf Ġ 1 2 Ġ 0 9 ĠĠĠ Ġb bs 4 Ġ Ġ${ '$ '} 1 2 , Ġ${ '$ '} 0 2 4 d Ċ ${ '$ '} 0 2 4 4 Ġ Ġdf Ġ 1 2 Ġ 0 6 ĠĠĠ Ġb bs 5 Ġ Ġ${ '$ '} 1 2 , Ġ${ '$ '} 0 2 4 d Ċ ${ '$ '} 0 2 4 7 Ġ Ġef Ġ 1 2 Ġ 0 3 ĠĠĠ Ġb bs 6 Ġ Ġ${ '$ '} 1 2 , Ġ${ '$ '} 0 2 4 d Ċ ${ '$ '} 0 2 4 a Ġ Ġff Ġ 1 2 Ġ 0 0 ĠĠĠ Ġb bs 7 Ġ Ġ${ '$ '} 1 2 , Ġ${ '$ '} 0 2 4 d Ċ ${ '$ '} 0 2 4 d ĠĠ 0 0 ĠĠĠĠĠĠĠĠĠ Ġbr k Ċ ${ '$ '} 0 2 4 e ĠĠ 0 0 ĠĠĠĠĠĠĠĠĠ Ġbr k Ċ ${ '$ '} 0 2 4 f ĠĠ 0 0 ĠĠĠĠĠĠĠĠĠ Ġbr k Ċ ${ '$ '} 0 2 5 0 ĠĠ 0 0 ĠĠĠĠĠĠĠĠĠ Ġbr k """, Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Dis assemble W DC 6 5 C 0 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcpu Ġ= ĠC pu 6 5 C 0 2 () ĊĠĠĠĠĠĠĠ Ġval Ġdis assembler Ġ= ĠDis assembler ( cpu ) ĊĠĠĠĠĠĠĠ Ġval Ġmemory Ġ= ĠRam ( 0 , Ġ 0 x 0 fff ) ĊĠĠĠĠĠĠĠ Ġval Ġsource Ġ= Ġjava Class . class Loader . getResource (" dis as sem _ w dc 6 5 c 0 2 . bin ") ?. read Bytes () !! ĊĠĠĠĠĠĠĠ Ġmemory . load ( source , Ġ 0 x 2 0 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġdis as sem Ġ= Ġdis assembler . dis assemble ( memory . data , Ġ 0 x 0 2 0 0 .. 0 x 0 2 1 5 , Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 2 1 6 , Ġdis as sem . second ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdis as sem . first . join ToString ("\ n ") ĊĠĠĠĠĠĠĠ ĠassertEquals (""" ${ '$ '} 0 2 0 0 Ġ Ġcb ĠĠĠĠĠĠĠĠĠ Ġw ai Ċ ${ '$ '} 0 2 0 1 Ġ Ġdb ĠĠĠĠĠĠĠĠĠ Ġst p Ċ ${ '$ '} 0 2 0 2 ĠĠ 3 a ĠĠĠĠĠĠĠĠĠ Ġdec Ġ Ġa Ċ ${ '$ '} 0 2 0 3 ĠĠ 1 a ĠĠĠĠĠĠĠĠĠ Ġinc Ġ Ġa Ċ ${ '$ '} 0 2 0 4 ĠĠ 6 4 Ġ 1 2 ĠĠĠĠĠĠ Ġst z Ġ Ġ${ '$ '} 1 2 Ċ ${ '$ '} 0 2 0 6 ĠĠ 1 4 Ġ 1 2 ĠĠĠĠĠĠ Ġtr b Ġ Ġ${ '$ '} 1 2 Ċ ${ '$ '} 0 2 0 8 ĠĠ 0 4 Ġ 1 2 ĠĠĠĠĠĠ Ġt sb Ġ Ġ${ '$ '} 1 2 Ċ ${ '$ '} 0 2 0 a ĠĠ 7 2 Ġ 1 2 ĠĠĠĠĠĠ Ġadc Ġ Ġ${ '$ '} ( 1 2 ) Ċ ${ '$ '} 0 2 0 c Ġ Ġb 2 Ġ 1 2 ĠĠĠĠĠĠ Ġlda Ġ Ġ${ '$ '} ( 1 2 ) Ċ ${ '$ '} 0 2 0 e ĠĠ 9 2 Ġ 1 2 ĠĠĠĠĠĠ Ġsta Ġ Ġ${ '$ '} ( 1 2 ) Ċ ${ '$ '} 0 2 1 0 ĠĠ 7 c Ġ 0 0 Ġ 2 0 ĠĠĠ Ġjmp Ġ Ġ${ '$ '} ( 2 0 0 0 , x ) Ċ ${ '$ '} 0 2 1 3 ĠĠ 0 0 ĠĠĠĠĠĠĠĠĠ Ġbr k Ċ ${ '$ '} 0 2 1 4 ĠĠ 0 0 ĠĠĠĠĠĠĠĠĠ Ġbr k Ċ ${ '$ '} 0 2 1 5 ĠĠ 0 0 ĠĠĠĠĠĠĠĠĠ Ġbr k """, Ġresult ) ĊĠĠĠ Ġ} Ċ Ċ } ĊĊĊ