Из сообщения об ошибке тип p2 в этой точке равен «2», что равно kRegTypeConflict
.Конфликтующий тип означает, что существует несколько путей кода, которые объединяются вместе, и каждый путь кода имеет несовместимый входящий тип в этом регистре.
Если вы посмотрите на начало метода, вы увидите ":cond_0 "метка, что означает, что в методе есть еще какое-то условие, которое может перейти туда.Значение p2 в этом условном выражении не является целым числом, поэтому у нас есть 1 кодовый путь (от начала метода), где p2 - целое число, и другой кодовый путь (из условного перехода), где оно является чем-то другим, поэтомуВерификатор помечает регистр как конфликтующий.
Невозможно прочитать регистр конфликтующего типа.В этом случае вы можете рассматривать его как неинициализированный регистр.
Если вы хотите увидеть больше информации о том, как типы регистров объединяются в этом случае, вы можете использовать опцию baskmali --register-info
с флагом FULLMERGE.--register-info=ARGS,DEST,FULLMERGE
.Или, если вы хотите видеть каждый регистр до и после каждой инструкции, вы можете использовать --register-info="ALL,FULLMERGE"