2009-04-07 16 views
1

Ich entwickle einen Compiler für mein Senior-Projekt in der Schule, und ich verwende AS (GNU Assembler) zu montieren. Alle meine Tests waren ziemlich erfolgreich, aber keine Interrupt-Listen, die ich gesehen habe, schienen zu funktionieren oder mit meinem Testcode übereinzustimmen.Wo finde ich eine Unterbrechungsliste für i486-linux-gnu Befehlssatz?

Die relevanten Informationen für diese Version von AS:

GNU Assembler 2.17 Debian GNU/Linux Copyright 2005 Free Software Foundation, Inc. Dieses Programm ist freie Software; Sie können es unter den Bedingungen von der GNU General Public License neu verteilen. Dieses Programm hat keinerlei Garantie. Dieser Assembler wurde für ein Ziel von 'i486-linux-gnu' konfiguriert.

+0

Warum müssen Sie mit Interrupts umgehen? Meinst du nicht System Anrufliste, sondern Interrupt-Liste? –

Antwort

0

IMHO die Art und Weise Interrupts sind hardware-spezifisch angeschlossen. Es kann lehrreich sein zu sehen, wie der Linux-Kernel mit Interrupts auf der Hardware umgeht, auf die Sie abzielen.

2

Linux verwendet keine Interrupts für Systemaufrufe auf dieselbe Weise wie DOS. Es verwendet eine architekturabhängige Methode für Systemaufrufe, die auf x86 Int 0x80 sein kann, aber moderne (Pentium +) CPUs sollten stattdessen die SYSENTER-Anweisung verwenden. Andere Software-Interrupts werden nicht verwendet.

Normalerweise kümmern Sie sich nicht um das, weil auch in Assembler-Sprache, werden Sie wahrscheinlich immer noch die C-Bibliothek verwenden möchten, die diese umschließt.

3

In Linux verwenden Sie einen Interrupt: 80h. Der Syscall, dem dieser Interrupt entspricht, ist in this table zu finden.