2020-02-27 17:33:44 -05:00
|
|
|
.section data $0x1000 {
|
|
|
|
|
dead: .u16 $0xDEAD
|
|
|
|
|
beef: .u16 $0xBEEF
|
|
|
|
|
|
|
|
|
|
.export dead
|
|
|
|
|
.export beef
|
|
|
|
|
}
|
2020-01-25 19:17:39 -05:00
|
|
|
|
2020-02-25 12:07:24 -05:00
|
|
|
.section code $0x0 {
|
|
|
|
|
main:
|
2020-03-06 12:18:20 -05:00
|
|
|
mov %ivt, ivt
|
|
|
|
|
or %flags, $0b100
|
2020-02-25 12:07:24 -05:00
|
|
|
mov %r0, $0xDEAD
|
|
|
|
|
shl %r0, $16
|
|
|
|
|
; move 32 bits at 'beef' to %r01
|
|
|
|
|
; TODO(syntax)
|
|
|
|
|
mov %r1, (beef)u32
|
|
|
|
|
or %r0, %r01
|
|
|
|
|
cmpeq %r0, $0xDEADBEEF
|
|
|
|
|
; jump to the address 'end'
|
2020-02-27 15:52:17 -05:00
|
|
|
jnz end
|
2020-02-25 12:07:24 -05:00
|
|
|
mov %status, $1
|
|
|
|
|
end:
|
2020-03-06 12:18:20 -05:00
|
|
|
div %r0, $0
|
2020-02-25 12:07:24 -05:00
|
|
|
halt
|
2020-02-09 13:04:56 -05:00
|
|
|
.export main
|
2020-03-06 12:18:20 -05:00
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.section iv $0x2800 {
|
|
|
|
|
dz:
|
|
|
|
|
mov %status, $255
|
|
|
|
|
halt
|
|
|
|
|
|
|
|
|
|
.export dz
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.section ivt $0x2000 .. $0x2800 {
|
|
|
|
|
ivt:
|
|
|
|
|
.interrupt $1, dz ; Divide by zero
|
|
|
|
|
|
|
|
|
|
.export ivt
|
2020-02-09 13:04:56 -05:00
|
|
|
}
|
|
|
|
|
|
2020-02-25 12:07:24 -05:00
|
|
|
.meta {
|
2020-02-09 13:04:56 -05:00
|
|
|
entry: main
|
|
|
|
|
}
|