-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStdLibrary.sql
More file actions
94 lines (88 loc) · 2.04 KB
/
StdLibrary.sql
File metadata and controls
94 lines (88 loc) · 2.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
USE [Assembler]
GO
/****** Object: Table [dbo].[StandardLibrary] Script Date: 12/12/2018 21:53:37 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID(N'dbo.StdFunction', N'U') IS NOT NULL
DROP TABLE dbo.StdFunction
CREATE TABLE dbo.StdFunction
(
Code nvarchar(6) PRIMARY KEY CLUSTERED NOT NULL,
Name nvarchar(200),
Label nvarchar(8) NOT NULL,
ArgumentCount int,
Description nvarchar(200)
)
GO
INSERT dbo.StdFunction
(
Code,
Name,
Label,
ArgumentCount,
Description
)
SELECT N'STDMUL',
N'Multiply',
N'STDMUL',
2,
N'Multiplies the two arguments, returning the value of the multiplication. Uses iterative addition.'
CREATE TABLE [dbo].[StdLibraryOp](
StdFunctionCode nvarchar(6) NOT NULL,
Idx int NOT NULL,
[Label] [nvarchar](8) NULL,
[OpCode] [nvarchar](6) NOT NULL,
[Arg1] [nvarchar](8) NULL,
[Arg2] [nvarchar](8) NULL,
PRIMARY KEY CLUSTERED
(
StdFunctionCode, [Idx] ASC
))
GO
SELECT N'STDMUL', N'', NULL, NULL
UNION ALL
SELECT NULL, N'STR', N'50000', NULL --arg2
UNION ALL
SELECT NULL, N'LOAD', N'50000', NULL --arg2
UNION ALL
SELECT NULL, N'JGZ', N'POS', NULL
UNION ALL
SELECT NULL, N'LOAD', N'50000', NULL --arg2
UNION ALL
SELECT NULL, N'NEG', NULL, NULL
UNION ALL
SELECT NULL, N'STR', N'50000', NULL -- |arg2|
UNION ALL
SELECT NULL, N'NEG', NULL, NULL -- |arg1|
UNION ALL
SELECT N'POS', N'STR', N'50001', NULL --arg1
UNION ALL
SELECT NULL, N'PUSH', N'0', NULL
UNION ALL
SELECT NULL, N'STR', N'50002', NULL --temp
UNION ALL
SELECT N'START', N'LOAD', N'50000', NULL
UNION ALL
SELECT NULL, N'JEZ', N'END', NULL
UNION ALL
SELECT NULL, N'LOAD', N'50001', NULL
UNION ALL
SELECT NULL, N'LOAD', N'50002', NULL
UNION ALL
SELECT NULL, N'PLUS', NULL, NULL
UNION ALL
SELECT NULL, N'STR', N'50002', NULL --temp
UNION ALL
SELECT NULL, N'PUSH', N'1', NULL
UNION ALL
SELECT NULL, N'LOAD', N'50000', NULL --|arg2|
UNION ALL
SELECT NULL, N'SUB', NULL, NULL --|arg2| - 1
UNION ALL
SELECT NULL, N'STR', N'50000', NULL
UNION ALL
SELECT NULL, N'JUMP', N'START', NULL
UNION ALL
SELECT N'END', N'LOAD', N'50002', NULL