Skip to content
GitLab
Explore
Sign in
Register
Commits on Source (2)
misspell in Makefile
· 8a17c556
Masahiko Sakai
authored
Apr 09, 2019
8a17c556
adopt to 64bit by modifying /unsigned long/ to /unsigned int/
· a93ad542
Masahiko Sakai
authored
Apr 09, 2019
a93ad542
Show whitespace changes
Inline
Side-by-side
Makefile
View file @
a93ad542
malbolg20
:
malbolge20.c
CC
-o
malbolge20 malbolge20.c
-lm
malbolg
e
20
:
malbolge20.c
${
CC
}
-o
malbolge20 malbolge20.c
-lm
clean
:
rm
-rf
malbolge20 malbolge20.o
malbolge20.c
View file @
a93ad542
...
...
@@ -10,13 +10,13 @@
#ifdef __GNUC__
static
inline
#endif
void
exec
(
int
flag
[
59049
],
unsigned
long
**
mem
,
unsigned
long
init
[
59049
][
2
]
);
void
exec
(
int
flag
[
59049
],
unsigned
int
**
mem
,
unsigned
int
init
[
59049
][
2
]
);
#ifdef __GNUC__
static
inline
#endif
unsigned
long
op
(
unsigned
long
x
,
unsigned
long
y
);
void
make_init_mem
(
int
id
,
unsigned
long
**
mem
,
unsigned
long
init
[
59049
][
2
]);
unsigned
int
op
(
unsigned
int
x
,
unsigned
int
y
);
void
make_init_mem
(
int
id
,
unsigned
int
**
mem
,
unsigned
int
init
[
59049
][
2
]);
const
char
xlat1
[]
=
"+b(29e*j1VMEKLyC})8&m#~W>qxdRp0wkrUo[D7,XTcA
\"
lI"
...
...
@@ -30,10 +30,10 @@ const char xlat2[] =
int
main
(
int
argc
,
char
**
argv
)
{
unsigned
long
**
mem
;
unsigned
int
**
mem
;
int
flag
[
59049
];
// ブロックが使用済みか否か
unsigned
long
init
[
59050
][
2
];
// 各ブロックの最初2つ分の初期値を記憶
unsigned
long
i
,
ii
=
0
;
unsigned
int
init
[
59050
][
2
];
// 各ブロックの最初2つ分の初期値を記憶
unsigned
int
i
,
ii
=
0
;
int
x
;
for
(
i
=
0
;
i
<
59049
;
i
++
){
// フラグ初期化
...
...
@@ -51,7 +51,7 @@ int main( int argc, char **argv )
return
(
1
);
}
mem
=
(
unsigned
long
**
)
malloc
(
sizeof
(
unsigned
long
)
*
59049
);
mem
=
(
unsigned
int
**
)
malloc
(
sizeof
(
unsigned
int
)
*
59049
);
if
(
mem
==
NULL
)
{
fclose
(
f
);
...
...
@@ -61,7 +61,7 @@ int main( int argc, char **argv )
int
id
=
0
;
//第0ブロックのメモリ領域確保
mem
[
id
]
=
(
unsigned
long
*
)
malloc
(
sizeof
(
unsigned
long
)
*
59049
);
mem
[
id
]
=
(
unsigned
int
*
)
malloc
(
sizeof
(
unsigned
int
)
*
59049
);
if
(
mem
[
id
]
==
NULL
)
{
fclose
(
f
);
...
...
@@ -102,7 +102,7 @@ int main( int argc, char **argv )
return
(
1
);
}
//次ブロックのメモリ領域を確保
mem
[
id
]
=
(
unsigned
long
*
)
malloc
(
sizeof
(
unsigned
long
)
*
59049
);
mem
[
id
]
=
(
unsigned
int
*
)
malloc
(
sizeof
(
unsigned
int
)
*
59049
);
if
(
mem
[
id
]
==
NULL
)
{
fclose
(
f
);
...
...
@@ -138,7 +138,7 @@ int main( int argc, char **argv )
/* 各ブロックの遅延初期化を行うための準備をする関数 */
/* 各ブロックの最初の2ワードを計算し, initに格納 */
void
make_init_mem
(
int
id
,
unsigned
long
**
mem
,
unsigned
long
init
[
59049
][
2
]){
void
make_init_mem
(
int
id
,
unsigned
int
**
mem
,
unsigned
int
init
[
59049
][
2
]){
int
i
,
j
;
int
x
,
y
,
temp0
,
temp1
;
int
num0
[
3
][
3
]
=
{{
0
,
1
,
2
},
{
0
,
1
,
1
},
{
0
,
2
,
2
},
};
...
...
@@ -169,7 +169,7 @@ static inline
#endif
/* JMPとMOV_Dの時に呼ばれ, その処理を実行する. */
void
mem_manage
(
unsigned
long
*
reg_addr
,
unsigned
long
num
,
int
*
id
,
unsigned
long
**
mem
,
unsigned
long
init
[
59049
][
2
],
int
flag
[
59049
]){
void
mem_manage
(
unsigned
int
*
reg_addr
,
unsigned
int
num
,
int
*
id
,
unsigned
int
**
mem
,
unsigned
int
init
[
59049
][
2
],
int
flag
[
59049
]){
int
new_reg_addr
=
0
;
int
new_id
;
int
i
;
...
...
@@ -182,7 +182,7 @@ void mem_manage(unsigned long *reg_addr, unsigned long num, int *id, unsigned lo
/* 初期化されていないブロックだった場合、初期化する*/
if
(
flag
[
new_id
]
==
UNALLOCATED
){
//すでに初期化済みかチェック
mem
[
new_id
]
=
(
unsigned
long
*
)
malloc
(
sizeof
(
unsigned
long
)
*
59049
);
mem
[
new_id
]
=
(
unsigned
int
*
)
malloc
(
sizeof
(
unsigned
int
)
*
59049
);
if
(
mem
[
new_id
]
==
NULL
){
fclose
(
f
);
free
(
mem
);
...
...
@@ -202,7 +202,7 @@ void mem_manage(unsigned long *reg_addr, unsigned long num, int *id, unsigned lo
}
/* 命令実行後のインクリメント. increment(c, c_id)*/
void
increment
(
unsigned
long
*
reg_addr
,
int
*
id
,
int
flag
[
59049
],
unsigned
long
**
mem
,
unsigned
long
init
[
59049
][
2
]){
void
increment
(
unsigned
int
*
reg_addr
,
int
*
id
,
int
flag
[
59049
],
unsigned
int
**
mem
,
unsigned
int
init
[
59049
][
2
]){
int
i
;
if
(
*
reg_addr
==
59048
){
if
(
*
id
==
59048
){
...
...
@@ -210,7 +210,7 @@ void increment(unsigned long *reg_addr, int *id, int flag[59049], unsigned long
}
else
{
*
id
+=
1
;
*
reg_addr
=
0
;
if
(
flag
[
*
id
]
==
UNALLOCATED
){
//すでに初期化済みかチェック
mem
[
*
id
]
=
(
unsigned
long
*
)
malloc
(
sizeof
(
unsigned
long
)
*
59049
);
mem
[
*
id
]
=
(
unsigned
int
*
)
malloc
(
sizeof
(
unsigned
int
)
*
59049
);
if
(
mem
[
*
id
]
==
NULL
){
fclose
(
f
);
fputs
(
"can't allocate memory
\n
"
,
stderr
);
...
...
@@ -230,9 +230,9 @@ void increment(unsigned long *reg_addr, int *id, int flag[59049], unsigned long
}
void
exec
(
int
flag
[
59049
],
unsigned
long
**
mem
,
unsigned
long
init
[
59049
][
2
]
)
void
exec
(
int
flag
[
59049
],
unsigned
int
**
mem
,
unsigned
int
init
[
59049
][
2
]
)
{
unsigned
long
a
=
0
,
c
=
0
,
d
=
0
;
unsigned
int
a
=
0
,
c
=
0
,
d
=
0
;
int
x
;
int
c_id
=
0
,
d_id
=
0
;
for
(;;)
...
...
@@ -281,12 +281,12 @@ void exec( int flag[59049], unsigned long **mem, unsigned long init[59049][2] )
static
inline
#endif
unsigned
long
op
(
unsigned
long
x
,
unsigned
long
y
)
unsigned
int
op
(
unsigned
int
x
,
unsigned
int
y
)
{
unsigned
long
i
=
0
,
j
;
static
const
unsigned
long
p9
[
10
]
=
unsigned
int
i
=
0
,
j
;
static
const
unsigned
int
p9
[
10
]
=
{
1
,
9
,
81
,
729
,
6561
,
59049
,
531441
,
4782969
,
43046721
,
387420489
};
static
const
unsigned
long
o
[
9
][
9
]
=
static
const
unsigned
int
o
[
9
][
9
]
=
{
{
4
,
3
,
3
,
1
,
0
,
0
,
1
,
0
,
0
},
{
4
,
3
,
5
,
1
,
0
,
2
,
1
,
0
,
2
},
...
...