Apakah interupsi non-maskable memiliki prioritas dibandingkan instruksi saat ini?

Saya sedang mengerjakan kursus Perakitan dan pertanyaan berikut membingungkan saya. Saya sudah mencoba mereplikasinya dalam kode, tetapi sulit untuk mereproduksi situasi di simulator.

Nilai 5 disimpan pada 0x0000100. Pada saat yang sama ketika prosesor sedang mengevaluasi instruksi INCB 0x0000100, interupsi NMI dimunculkan dan memanggil sub-rutin yang mengalikan nilai pada 0x0000100 dengan 2. Berapakah nilai akhir pada 0x0000100?

Saya agak bingung apakah instruksi saat ini akan selesai sebelum interupsi diproses, atau langsung dibatalkan.


person JonathanReez    schedule 26.04.2015    source sumber
comment
Instruksi saat ini akan diselesaikan terlebih dahulu. Manualnya mengatakan: Semua interupsi dijamin akan dilakukan pada batas instruksi.   -  person Jester    schedule 26.04.2015
comment
Urutan interupsi akan dimulai pada akhir siklus instruksi saat ini. Beberapa instruksi membutuhkan waktu lebih lama untuk diselesaikan dibandingkan instruksi lainnya. Waktu yang dibutuhkan dari masukan sinyal hingga interupsi dimulai disebut latensi. Jadi nilai pada alamat 0x0000100 akan menjadi 6 pada awal penanganan NMI.   -  person Weather Vane    schedule 26.04.2015


Jawaban (1)


Penangan NMI menggunakan siklus pengambilan, proses, penulisan yang sama persis dengan kode lainnya saat sedang berjalan (Anda tidak ingin mereplikasi gerbang jika tidak perlu). Ini hanya menyimpan status prosesor, mendorong penghitung program saat ini ke tumpukan dan mengubah PC menjadi pengendali interupsi. Ketika kembali dari interupsi dipanggil, ia meneruskan apa yang ditinggalkannya.

Bagaimana mereka bisa melakukan hal itu jika mereka mengizinkan instruksi parsial?

(Tidak bermaksud sinis - menurut saya "mengapa" lebih menarik daripada "apa")

person Mike    schedule 27.04.2015