Я создаю программу на C, которая имитирует от начала до конца вымышленную аппаратную систему LC4 (немного отличную версию от хорошо известной системы LC3. В настоящее время я нахожусь на инструкциях сравнения, которые обрабатываются арифметическим логическим мультиплексором. Ониперечислены следующим образом:
CMP Rs Rt: NZP = signed-CC(Rs-Rt) 0010sss00----ttt
CMPU Rs Rt: NZP = unsigned-CC(Rs-Rt) 0010sss01----ttt
CMPI Rs IMM7: NZP = signed-CC(Rs-SEXT(IMM7)) 0010sss10IIIIIII
CMPIU Rs UIMM7: NZP = unsigned-CC(Rs-UIMM7)
Я понимаю разницу между сравнением значений в двух регистрах и сравнением одного значения в регистре и другого значения, извлеченного из инструкции LC4 (например, CMP против CMPI).Может ли кто-нибудь объяснить мне точно, что значит делать сравнение со знаком и без знака (CMP против CMPU или CMPI против CMPIU), при каких обстоятельствах вы будете делать либо, желательно с примерами? Спасибо!