Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Martin Pepin
sysdig
Commits
4291a160
Commit
4291a160
authored
Jan 17, 2017
by
Martin Pépin
Browse files
Syscalls work !
parent
78bc7b0f
Changes
2
Hide whitespace changes
Inline
Side-by-side
simulator/syscall.ml
View file @
4291a160
...
...
@@ -8,11 +8,11 @@ let sys_input_int () = Scanf.scanf "%d " (fun x -> x)
(** Prints the string starting at start_addr in RAM on stdout.
The string must end with \000. *)
let
sys_print_str
r
o
m
start_addr
=
let
sys_print_str
r
a
m
start_addr
=
let
addr
=
ref
start_addr
in
let
current_char
=
ref
0
in
let
read_char
()
=
let
c
=
Ram
.
int_of_bits
@@
Ram
.
get_byte
r
o
m
!
addr
in
let
c
=
Ram
.
int_of_bits
@@
Ram
.
get_byte
r
a
m
!
addr
in
current_char
:=
c
;
incr
addr
in
while
(
read_char
()
;
!
current_char
<>
0
)
do
...
...
@@ -40,7 +40,7 @@ let syscall ram rom =
match
v0
with
|
0
->
0
(* a dummy syscall *)
|
1
->
reset
ram
;
sys_print_int
a0
|
4
->
reset
ram
;
sys_print_str
r
o
m
a0
|
4
->
reset
ram
;
sys_print_str
r
a
m
a0
|
5
->
reset
ram
;
sys_input_int
()
|
10
->
reset
ram
;
sys_exit
()
|
n
->
failwith
@@
...
...
test/asm/syscall.s
View file @
4291a160
.
text
main
:
addi
$a0
,
$zero
,
21
addi
$a0
,
$a0
,
21
addi
$a0
,
$zero
,
42
addi
$v0
,
$zero
,
1
syscall
nop
addi
$v0
,
$zero
,
10
la
$a0
,
hello
addi
$v0
,
$zero
,
4
syscall
addi
$v0
,
$zero
,
10
syscall
.
data
hello
:
.
asciiz
"\nHello, world\n"
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment