interruptstubs.s:
.set IRQ_BASE, 0x20
.text
.extern _ZN16InterruptManager15HandleInterruptEhj
.global _ZN16InterruptManager22IgnoreInterruptRequestEv
.macro HandleException num
.global _ZN16InterruptManager19HandleException\num\()Ev
_ZN16InterruptManager19HandleException\num\()Ev:
movb $\num, (interruptnumber)
jmp int_bottom
.endm
.macro HandleInterruptRequest num
.global _ZN16InterruptManager26HandleInterruptRequest\num\()Ev
_ZN16InterruptManager26HandleInterruptRequest\num\()Ev:
movb $\num + IRQ_BASE, (interruptnumber)
jmp int_bottom
.endm
HandleInterruptRequest 0x00
HandleInterruptRequest 0x01
int_bottom:
pusha
pushl %ds
pushl %es
pushl %fs
pushl %gs
pushl %esp
push (interruptnumber)
call _ZN16InterruptManager15handleInterruptEhj
movl %eax, %esp
popl %gs
popl %fs
popl %es
popl %ds
popa
_ZN22InterruptManager26HandleInterruptRequestEv:
iret
.data
interruptnumber: .byte 0
Раньше я писал сборку на Linux Mint, но поскольку у меня есть Ma c, я получаю странные ошибки, которых я не совсем понимаю. Я получаю эти ошибки всякий раз, когда пытаюсь скомпилировать свой код:
interruptstubs.s:32:5: error: unknown use of instruction mnemonic
> without a size suffix
> pusha
> ^
> interruptstubs.s:33:5: error: instruction requires: Not 64-bit mode
> pushl %ds
> ^
> interruptstubs.s:34:5: error: instruction requires: Not 64-bit mode
> pushl %es
> ^
> interruptstubs.s:35:5: error: instruction requires: Not 64-bit mode
> pushl %fs
> ^
> interruptstubs.s:36:5: error: instruction requires: Not 64-bit mode
> pushl %gs
> ^
> interruptstubs.s:38:5: error: instruction requires: Not 64-bit mode
> pushl %esp
> ^
> interruptstubs.s:43:5: error: instruction requires: Not 64-bit mode
> popl %gs
> ^
> interruptstubs.s:44:5: error: instruction requires: Not 64-bit mode
> popl %fs
> ^
> interruptstubs.s:45:5: error: instruction requires: Not 64-bit mode
> popl %es
> ^
> interruptstubs.s:46:5: error: instruction requires: Not 64-bit mode
> popl %ds
> ^
> interruptstubs.s:47:5: error: unknown use of instruction mnemonic without a size suffix
> popa
Это те ошибки, которые я получаю, я думаю, что пытаюсь sh неправильные регистры для 32-битного режима, о которых я понятия не имел раствор