A method of operating a microprocessor having associated a memory, wherein said memory comprises a first software routine stored to a first memory area starting at a first address (func _ok) and a second software routine stored to a second memory area starting at a second address (func_fail), wherein the method comprises the steps of: - obtaining data and an expected value; - generating a first result and a second result by combining said obtained data with said expected value exclusively via first combinational and/or arithmetic operations (2002; 2002, 2010), wherein said first combinational and/or arithmetic operations are configured to: - when said obtained data correspond to said expected value, set said first result to a first predetermined value (ERES1), and - when said obtained data correspond to said expected value, set said second result to a second predetermined value (ERES2), wherein said second predetermined value (ERES2) has a bit sequence being different from the bit sequence of said first predetermined value (ERES1); - obtaining said first address (func_ok) and said second address (func_fail); - generating an address pointer (func) by combining said first result, said second result, said first address (func_ok) and said second address (func _fail) exclusively via second combinational and/or arithmetic operations, wherein said second combinational and/or arithmetic operations are configured to: - when said first result corresponds to said first predetermined value (ERES1) and said second result corresponds to said second predetermined value (ERES2), assign to said address pointer (func) the value of said first address (func _ok), and - when said first result does not correspond to said first predetermined value (ERES1) or said second result does not correspond to said second predetermined value (ERES2), assign to said address pointer (func) the value of said second address (func_fail); - jumping to said address pointer (func), thereby executing said first software routine when said data correspond to said expected value. - obtaining data and an expected value; - generating a first result and a second result by combining said obtained data with said expected value exclusively via first combinational and/or arithmetic operations (2002; 2002, 2010), wherein said first combinational and/or arithmetic operations are configured to: - when said obtained data correspond to said expected value, set said first result to a first predetermined value (ERES1), and - when said obtained data correspond to said expected value, set said second result to a second predetermined value (ERES2), wherein said second predetermined value (ERES2) has a bit sequence being different from the bit sequence of said first predetermined value (ERES1); - when said obtained data correspond to said expected value, set said first result to a first predetermined value (ERES1), and - when said obtained data correspond to said expected value, set said second result to a second predetermined value (ERES2), wherein said second predetermined value (ERES2) has a bit sequence being different from the bit sequence of said first predetermined value (ERES1); - obtaining said first address (func_ok) and said second address (func_fail); - generating an address pointer (func) by combining said first result, said second result, said first address (func_ok) and said second address (func _fail) exclusively via second combinational and/or arithmetic operations, wherein said second combinational and/or arithmetic operations are configured to: - when said first result corresponds to said first predetermined value (ERES1) and said second result corresponds to said second predetermined value (ERES2), assign to said address pointer (func) the value of said first address (func _ok), and - when said first result does not correspond to said first predetermined value (ERES1) or said second result does not correspond to said second predetermined value (ERES2), assign to said address pointer (func) the value of said second address (func_fail); - when said first result corresponds to said first predetermined value (ERES1) and said second result corresponds to said second predetermined value (ERES2), assign to said address pointer (func) the value of said first address (func _ok), and - when said first result does not correspond to said first predetermined value (ERES1) or said second result does not correspond to said second predetermined value (ERES2), assign to said address pointer (func) the value of said second address (func_fail); - jumping to said address pointer (func), thereby executing said first software routine when said data correspond to said expected value.