Bosh sahifa Wiki Illegal Instruction

Illegal Instruction

Illegal InstructionCPU joriy mode yoki feature to‘plamida tanimaydigan, taqiqlangan yoki noto‘g‘ri kodlangan instructionni bajarishga uringanda yuz beradigan fault.

CPU feature

Binary yangi ISA extension bilan tuzilib eski CPUda ishga tushsa opcode illegal bo‘lishi mumkin. Runtime dispatch feature tekshiruvdan keyin specialized functionni tanlashi kerak.

Buzilgan oqim

Instruction stream memory corruption, noto‘g‘ri function pointer yoki code sahifaga data yozilishi sabab buzilishi mumkin. PC valid executable segment ichida ekanini tekshirish diagnostikaga yordam beradi.

Privilege

Privileged instruction user mode’da bajarilsa ayrim architecture illegal-instruction, boshqasi protection fault beradi. Signal/exception nomi platformaga bog‘liq.

Intentional trap

Compiler intentional trap yoki undefined instruction opcodeni unreachable/assert failure uchun chiqarishi mumkin. Bu xato CPU qo‘llamasligi emas, dastur ataylab to‘xtagan bo‘lishi mumkin.

JIT

JIT instruction cache flush qilmasa CPU eski yoki qisman yangilangan code’ni ko‘rishi mumkin. W^X va atomic code publication protokoli zarur.

Test

Test minimal CPU baseline, feature dispatch, corrupt function pointer, JIT publish va trap builtin’ni qamraydi. Crash report instruction bytes va CPU featurelarni yozadi.

Amaliy nazorat

Illegal Instruction bilan ishlaydigan tizim instruction bytes, CPU feature va PCni aniq lifecycle va version bilan yuritadi. Pointer, mapping, navbat yoki exception holati boshqa qatlamga uzatilganda ownership hamda permission shartlari yo‘qolmaydi. Debug rejimda manzil, obyekt identifikatori va state transition qayd etiladi; production log ASLR, maxfiy ma’lumot va raw pointerlarni ochib yubormaydigan shaklga keltiriladi. Eskirgan handle yoki metadata reuse qilinmasligi uchun generation, build-id yoxud reference hisobidan foydalaniladi.

Muhim xavf — unsupported ISA yoki corrupt code pointer. Bunday vaziyatda tizim taxmin bilan davom etmaydi: access fault, aniq error, konservativ fallback yoki nazoratli cleanup qo‘llanadi. Signal/fault kelgan nuqta har doim asl buzilish joyi emas; allocation, mapping va oxirgi ownership amallari trace’i tashxisga yordam beradi. Parallel accessda lock, atomic ordering va lifetime birgalikda tekshiriladi. Timeout yoki null check memory safetyning o‘rnini bosa olmaydi.

Sifat nazorati baseline CPU va JIT publish testi orqali bajariladi. Sinovlar normal holat bilan birga nol uzunlik, page boundary, alignment, juda katta offset, concurrent close/free, permission o‘zgarishi va platforma farqlarini qamraydi. Correctness avval etalon hamda invariant bilan tekshiriladi, keyin page fault, cache miss, contention, latency yoki xotira sarfi o‘lchanadi. Sanitizer, fault injection va malformed-input fuzzing topgan minimal holat doimiy regressiya testiga aylantiriladi.

Illegal instruction faulti opcode dekoder joriy CPU rejimida instruktsiyani tanimasa yoki undan foydalanishga ruxsat bermasa yuz beradi. Binary yangi ISA extension bilan kompilyatsiya qilinib eski protsessorda ishga tushirilsa feature detection yetishmasligi ko‘rinadi. Boshqa holatda corrupted return address CPUni ma’lumot baytlarini kod sifatida bajarishga olib keladi; bu yerda opcode simptom, asl sabab memory corruptiondir. JIT kod sahifasi execute permissionga ega bo‘lishi, instruction cache sinxronlashtirilishi va target featurega mos variant tanlanishi kerak. Crash tahlilida opcode baytlari, disassembly, CPU feature mask va control-flow tarixi solishtiriladi.

Bog‘liq tushunchalar

invalid opcode, CPU feature, trap instruction, JIT compiler, executable memory, SIGILL