public void resolveJumpMarkings() throws SemanticException {
        //scan for positions
        int position = 0;
        final Map<String, Integer> jumpAddresses = new HashMap<>();
        for (final Instruction instruction : instructions) {
            if (jumpMarkings.containsKey(instruction)) {
                final String aJumpMarking = jumpMarkings.get(instruction);
                jumpAddresses.put(aJumpMarking, position);
            }

            if (instruction.getOperation() != Operation.DAT) {
                position++; //for the instruction itself except for DAT
            } 
            
            if (instruction.getOperandA().hasAdditionalWord()) {
                position++; //for operandA
            }
            if (instruction.getOperation().getParameterCount() == 2) {
                if (instruction.getOperandB().hasAdditionalWord()) {
                    position++; //for operandB
                }
            }
        }
        
        //resolve jump markings
        for (final Instruction instruction : instructions) {
            resolveJumpMarking(jumpAddresses, instruction.getOperandA());
            if (instruction.getOperation().getParameterCount() > 1) {
                resolveJumpMarking(jumpAddresses, instruction.getOperandB());
            }
        }
    }