@@ -9,7 +9,6 @@ use assembler::utils::convert_8085_hex_to_i32;
99use assembler:: assemble;
1010use assembler:: assembly;
1111
12- use crate :: core:: AssembledMeta ;
1312
1413fn remove_comments ( line : & str ) -> & str {
1514 if let Some ( index) = line. find ( ";" ) {
@@ -48,13 +47,13 @@ fn test_fix_hexadecimal() {
4847
4948
5049#[ allow( unused_variables, unused_mut) ]
51- pub fn generate_assembly_code ( lines : Vec < String > ) -> ( Vec < u8 > , Vec < AssembledMeta > ) {
50+ pub fn generate_assembly_code ( lines : Vec < String > ) -> ( Vec < u8 > , Vec < usize > ) {
5251
5352 let mut label_offset_map: HashMap < String , u32 > = HashMap :: new ( ) ;
5453
5554
5655 let mut assembly_code : Vec < u8 > = Vec :: new ( ) ;
57- let mut assembled_metadata : Vec < AssembledMeta > = Vec :: new ( ) ;
56+ let mut line_pc_vec : Vec < usize > = Vec :: new ( ) ;
5857 let mut line_number: u32 = 0 ;
5958
6059 for line in lines {
@@ -65,26 +64,21 @@ pub fn generate_assembly_code(lines:Vec<String>) -> (Vec<u8>,Vec<AssembledMeta>)
6564 match assembly:: OpcodeParser :: new ( ) . parse ( line) {
6665 Ok ( ops) => {
6766 if let Some ( l) = & ops. Label {
68- label_offset_map. insert ( l. clone ( ) , line_number ) ;
67+ label_offset_map. insert ( l. clone ( ) , assembly_code . len ( ) as u32 ) ;
6968 }
70- let e_data = AssembledMeta {
71- line_number : line_number as usize ,
72- start_position : assembly_code. len ( ) ,
73- original_text : original_line
74- } ;
7569 assembly_code. append ( & mut assemble ( ops, & label_offset_map) ) ;
76- assembled_metadata. push ( e_data) ;
7770 } ,
7871 Err ( _) => { println ! ( "error" ) ; }
7972 }
73+ line_pc_vec. push ( assembly_code. len ( ) ) ;
8074 }
81- ( assembly_code, assembled_metadata )
75+ ( assembly_code, line_pc_vec )
8276}
8377
8478
8579#[ test]
8680fn test_if_assembly_generated ( ) {
87- assert_eq ! ( generate_assembly_code( vec![ "nop" , "trello: mvi c, 34H" , "hello: mov b, c" , "jz hello" , "jnc trello" ] . iter( ) . map( |& x| { String :: from( x) } ) . collect( ) ) . 0 , vec![ 0 , 14 , 52 , 65 , 202 , 3 , 210 , 2 ] ) ;
81+ assert_eq ! ( generate_assembly_code( vec![ "nop" , "trello: mvi c, 34H" , "hello: mov b, c" , "jz hello" , "jnc trello" ] . iter( ) . map( |& x| { String :: from( x) } ) . collect( ) ) . 0 , vec![ 0 , 14 , 52 , 65 , 202 , 3 , 210 , 1 ] ) ;
8882 assert_eq ! ( generate_assembly_code( vec![ "mov a, b" . to_string( ) ] ) . 0 , vec![ 120 ] ) ;
8983}
9084
0 commit comments