working on prehod 2...

This commit is contained in:
Jaka Furlan 2025-12-13 17:27:34 +01:00
parent f79aa96359
commit 6261d9fe37
6 changed files with 84 additions and 27 deletions

View file

@ -2,7 +2,7 @@
open SemanticAnalyzer
(*vrne H vrstico*)
let getZaglavje (prviUkaz : lineSemantic) (lenProg : int) : string list =
let getZaglavjeAndStart (prviUkaz : lineSemantic) (lenProg : int) : string list * int =
let name = match prviUkaz.label with
| None -> "MOJPROG" (*default ime*)
| Some s -> if String.length s > 6 then "MOJPROG" else String.make (6 - String.length s) '0' ^ s (*paddamo z 0 če je < 6*)
@ -17,14 +17,19 @@ let getZaglavje (prviUkaz : lineSemantic) (lenProg : int) : string list =
| _ -> failwith "getZaglavje: invalid mnemonic_type"
in
let lenObjectCode = Printf.sprintf "%06X" lenProg in
["H" ^ name ^ startAddr ^ lenObjectCode] (*vrnemo concatiniran string in startAddr*)
["H" ^ name ^ startAddr ^ lenObjectCode], int_of_string startAddr (*vrnemo concatiniran string in startAddr*)
(*vrne T vrstico*)
let instructionList_to_objectCode (instructionList : string list) (startAddr : int) : string =
let startAddr = Printf.sprintf "%06X" startAddr in
let objectCode = String.concat "" instructionList in
let len = (String.length objectCode) / 2 in (*delimo z dva ker hočemo dolžino v bytih ne nibblih*)
let lenString = Printf.sprintf "%02X" len in
"T" ^ startAddr ^ lenString ^ objectCode (*vrnemo concatiniran T zapis*)
"T" ^ startAddr ^ lenString ^ objectCode (*vrnemo concatiniran T zapis*)
(*vrne E vrstico*)
let getEnd (start : int) : string =
let start = Printf.sprintf "%06X" start in
"E" ^ start