Website Summary Files Commits Branches @commit @diff @stats
path: root / JSImpl
diff options
context:
space:
mode:
Commitc32eda4e697803824e79878c74d541b81fbd04d8 (patch)
Author
 dtrendafilov <trendafilov.dn@gmail.com>
2018-11-15 11:35:44 +0200
Committer
 GitHub <noreply@github.com>
2018-11-15 11:35:44 +0200
Filesace7bdc0df3791b6db8878d52ba98cb368e180b8 /JSImpl
IPL-c32eda4e697803824e79878c74d541b81fbd04d8.tar
IPL-c32eda4e697803824e79878c74d541b81fbd04d8.tar.gz
IPL-c32eda4e697803824e79878c74d541b81fbd04d8.zip
Parenta7cd9d4f8d83024402bacb39786e5e1a018a0a04 (diff)
Parentd7b2e339ff06c64bcb1322eec396d4995da6b17a (diff)
Merge pull request #48 from SofiaCPP/feature/spasm_asm
Spasm tests and latest instruction set
diff --git a/JSImpl/solution/JSImpl.sln b/JSImpl/solution/JSImpl.sln
index 9915cf9..17799fc 100644
--- a/JSImpl/solution/JSImpl.sln
+++ b/JSImpl/solution/JSImpl.sln
@@ -1,15 +1,33 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Spasm", "Spasm", "{9892E17D-8434-0C54-6DEF-1FA8593093A4}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "gtest", "gtest", "{1BAF0A7D-0751-3553-F00B-49A7DC4CBCA3}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "JSImpl", "JSImpl", "{C30B5025-2FEB-CEC0-3803-5A97A4613522}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sprun", "..\..\spasm\solution\sprun.vcxproj", "{FD605F10-6975-87C1-32F7-2A219ECA83F2}"
+ ProjectSection(ProjectDependencies) = postProject
+ {AE0A9E7C-9A41-9F0D-432E-85102F441B0F} = {AE0A9E7C-9A41-9F0D-432E-85102F441B0F}
+ EndProjectSection
+EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Test", "..\test\Test.vcxproj", "{45DC8C7C-3113-8E0D-DAFF-7310C6150A0F}"
ProjectSection(ProjectDependencies) = postProject
{AE0A9E7C-9A41-9F0D-432E-85102F441B0F} = {AE0A9E7C-9A41-9F0D-432E-85102F441B0F}
+ {3F16CDE1-AB80-8158-F4BE-32FE60685FAD} = {3F16CDE1-AB80-8158-F4BE-32FE60685FAD}
{19EA680D-85FE-90BE-4E80-341EBA538DEF} = {19EA680D-85FE-90BE-4E80-341EBA538DEF}
{EC34880F-5849-B0C0-21CB-53208D9EACF1} = {EC34880F-5849-B0C0-21CB-53208D9EACF1}
{B686840F-229B-ACC0-EB1C-502057F0A8F1} = {B686840F-229B-ACC0-EB1C-502057F0A8F1}
{30B03E7E-1C68-80CB-856F-592771461BBC} = {30B03E7E-1C68-80CB-856F-592771461BBC}
EndProjectSection
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest", "..\test\gtest.vcxproj", "{EC34880F-5849-B0C0-21CB-53208D9EACF1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gmock", "..\test\gmock.vcxproj", "{B686840F-229B-ACC0-EB1C-502057F0A8F1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest_main", "..\test\gtest_main.vcxproj", "{30B03E7E-1C68-80CB-856F-592771461BBC}"
+EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JSLib", "JSLib.vcxproj", "{19EA680D-85FE-90BE-4E80-341EBA538DEF}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JSImpl", "JSImpl.vcxproj", "{549B84BA-403D-AF90-29F8-C2E4153936E1}"
@@ -17,19 +35,13 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JSImpl", "JSImpl.vcxproj",
{19EA680D-85FE-90BE-4E80-341EBA538DEF} = {19EA680D-85FE-90BE-4E80-341EBA538DEF}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest", "..\test\gtest.vcxproj", "{EC34880F-5849-B0C0-21CB-53208D9EACF1}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gmock", "..\test\gmock.vcxproj", "{B686840F-229B-ACC0-EB1C-502057F0A8F1}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest_main", "..\test\gtest_main.vcxproj", "{30B03E7E-1C68-80CB-856F-592771461BBC}"
-EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sprt", "..\..\spasm\solution\sprt.vcxproj", "{AE0A9E7C-9A41-9F0D-432E-85102F441B0F}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spasm", "..\..\spasm\solution\spasm.vcxproj", "{69185F10-D52C-87C1-9EAE-2A210A8283F2}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spasm_lib", "..\..\spasm\solution\spasm_lib.vcxproj", "{3F16CDE1-AB80-8158-F4BE-32FE60685FAD}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sprun", "..\..\spasm\solution\sprun.vcxproj", "{FD605F10-6975-87C1-32F7-2A219ECA83F2}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spasm", "..\..\spasm\solution\spasm.vcxproj", "{69185F10-D52C-87C1-9EAE-2A210A8283F2}"
ProjectSection(ProjectDependencies) = postProject
- {AE0A9E7C-9A41-9F0D-432E-85102F441B0F} = {AE0A9E7C-9A41-9F0D-432E-85102F441B0F}
+ {3F16CDE1-AB80-8158-F4BE-32FE60685FAD} = {3F16CDE1-AB80-8158-F4BE-32FE60685FAD}
EndProjectSection
EndProject
Global
@@ -38,18 +50,14 @@ Global
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {FD605F10-6975-87C1-32F7-2A219ECA83F2}.Debug|x64.ActiveCfg = Debug|x64
+ {FD605F10-6975-87C1-32F7-2A219ECA83F2}.Debug|x64.Build.0 = Debug|x64
+ {FD605F10-6975-87C1-32F7-2A219ECA83F2}.Release|x64.ActiveCfg = Release|x64
+ {FD605F10-6975-87C1-32F7-2A219ECA83F2}.Release|x64.Build.0 = Release|x64
{45DC8C7C-3113-8E0D-DAFF-7310C6150A0F}.Debug|x64.ActiveCfg = Debug|x64
{45DC8C7C-3113-8E0D-DAFF-7310C6150A0F}.Debug|x64.Build.0 = Debug|x64
{45DC8C7C-3113-8E0D-DAFF-7310C6150A0F}.Release|x64.ActiveCfg = Release|x64
{45DC8C7C-3113-8E0D-DAFF-7310C6150A0F}.Release|x64.Build.0 = Release|x64
- {19EA680D-85FE-90BE-4E80-341EBA538DEF}.Debug|x64.ActiveCfg = Debug|x64
- {19EA680D-85FE-90BE-4E80-341EBA538DEF}.Debug|x64.Build.0 = Debug|x64
- {19EA680D-85FE-90BE-4E80-341EBA538DEF}.Release|x64.ActiveCfg = Release|x64
- {19EA680D-85FE-90BE-4E80-341EBA538DEF}.Release|x64.Build.0 = Release|x64
- {549B84BA-403D-AF90-29F8-C2E4153936E1}.Debug|x64.ActiveCfg = Debug|x64
- {549B84BA-403D-AF90-29F8-C2E4153936E1}.Debug|x64.Build.0 = Debug|x64
- {549B84BA-403D-AF90-29F8-C2E4153936E1}.Release|x64.ActiveCfg = Release|x64
- {549B84BA-403D-AF90-29F8-C2E4153936E1}.Release|x64.Build.0 = Release|x64
{EC34880F-5849-B0C0-21CB-53208D9EACF1}.Debug|x64.ActiveCfg = Debug|x64
{EC34880F-5849-B0C0-21CB-53208D9EACF1}.Debug|x64.Build.0 = Debug|x64
{EC34880F-5849-B0C0-21CB-53208D9EACF1}.Release|x64.ActiveCfg = Release|x64
@@ -62,22 +70,39 @@ Global
{30B03E7E-1C68-80CB-856F-592771461BBC}.Debug|x64.Build.0 = Debug|x64
{30B03E7E-1C68-80CB-856F-592771461BBC}.Release|x64.ActiveCfg = Release|x64
{30B03E7E-1C68-80CB-856F-592771461BBC}.Release|x64.Build.0 = Release|x64
+ {19EA680D-85FE-90BE-4E80-341EBA538DEF}.Debug|x64.ActiveCfg = Debug|x64
+ {19EA680D-85FE-90BE-4E80-341EBA538DEF}.Debug|x64.Build.0 = Debug|x64
+ {19EA680D-85FE-90BE-4E80-341EBA538DEF}.Release|x64.ActiveCfg = Release|x64
+ {19EA680D-85FE-90BE-4E80-341EBA538DEF}.Release|x64.Build.0 = Release|x64
+ {549B84BA-403D-AF90-29F8-C2E4153936E1}.Debug|x64.ActiveCfg = Debug|x64
+ {549B84BA-403D-AF90-29F8-C2E4153936E1}.Debug|x64.Build.0 = Debug|x64
+ {549B84BA-403D-AF90-29F8-C2E4153936E1}.Release|x64.ActiveCfg = Release|x64
+ {549B84BA-403D-AF90-29F8-C2E4153936E1}.Release|x64.Build.0 = Release|x64
{AE0A9E7C-9A41-9F0D-432E-85102F441B0F}.Debug|x64.ActiveCfg = Debug|x64
{AE0A9E7C-9A41-9F0D-432E-85102F441B0F}.Debug|x64.Build.0 = Debug|x64
{AE0A9E7C-9A41-9F0D-432E-85102F441B0F}.Release|x64.ActiveCfg = Release|x64
{AE0A9E7C-9A41-9F0D-432E-85102F441B0F}.Release|x64.Build.0 = Release|x64
+ {3F16CDE1-AB80-8158-F4BE-32FE60685FAD}.Debug|x64.ActiveCfg = Debug|x64
+ {3F16CDE1-AB80-8158-F4BE-32FE60685FAD}.Debug|x64.Build.0 = Debug|x64
+ {3F16CDE1-AB80-8158-F4BE-32FE60685FAD}.Release|x64.ActiveCfg = Release|x64
+ {3F16CDE1-AB80-8158-F4BE-32FE60685FAD}.Release|x64.Build.0 = Release|x64
{69185F10-D52C-87C1-9EAE-2A210A8283F2}.Debug|x64.ActiveCfg = Debug|x64
{69185F10-D52C-87C1-9EAE-2A210A8283F2}.Debug|x64.Build.0 = Debug|x64
{69185F10-D52C-87C1-9EAE-2A210A8283F2}.Release|x64.ActiveCfg = Release|x64
{69185F10-D52C-87C1-9EAE-2A210A8283F2}.Release|x64.Build.0 = Release|x64
- {FD605F10-6975-87C1-32F7-2A219ECA83F2}.Debug|x64.ActiveCfg = Debug|x64
- {FD605F10-6975-87C1-32F7-2A219ECA83F2}.Debug|x64.Build.0 = Debug|x64
- {FD605F10-6975-87C1-32F7-2A219ECA83F2}.Release|x64.ActiveCfg = Release|x64
- {FD605F10-6975-87C1-32F7-2A219ECA83F2}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
+ {FD605F10-6975-87C1-32F7-2A219ECA83F2} = {9892E17D-8434-0C54-6DEF-1FA8593093A4}
+ {EC34880F-5849-B0C0-21CB-53208D9EACF1} = {1BAF0A7D-0751-3553-F00B-49A7DC4CBCA3}
+ {B686840F-229B-ACC0-EB1C-502057F0A8F1} = {1BAF0A7D-0751-3553-F00B-49A7DC4CBCA3}
+ {30B03E7E-1C68-80CB-856F-592771461BBC} = {1BAF0A7D-0751-3553-F00B-49A7DC4CBCA3}
+ {19EA680D-85FE-90BE-4E80-341EBA538DEF} = {C30B5025-2FEB-CEC0-3803-5A97A4613522}
+ {549B84BA-403D-AF90-29F8-C2E4153936E1} = {C30B5025-2FEB-CEC0-3803-5A97A4613522}
+ {AE0A9E7C-9A41-9F0D-432E-85102F441B0F} = {9892E17D-8434-0C54-6DEF-1FA8593093A4}
+ {3F16CDE1-AB80-8158-F4BE-32FE60685FAD} = {9892E17D-8434-0C54-6DEF-1FA8593093A4}
+ {69185F10-D52C-87C1-9EAE-2A210A8283F2} = {9892E17D-8434-0C54-6DEF-1FA8593093A4}
EndGlobalSection
EndGlobal
diff --git a/JSImpl/solution/JSImpl.vcxproj b/JSImpl/solution/JSImpl.vcxproj
index 8b58a96..0aa8deb 100644
--- a/JSImpl/solution/JSImpl.vcxproj
+++ b/JSImpl/solution/JSImpl.vcxproj
@@ -21,11 +21,13 @@
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
diff --git a/JSImpl/solution/JSLib.vcxproj b/JSImpl/solution/JSLib.vcxproj
index bb5c860..1d0f63a 100644
--- a/JSImpl/solution/JSLib.vcxproj
+++ b/JSImpl/solution/JSLib.vcxproj
@@ -21,11 +21,13 @@
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
@@ -111,23 +113,23 @@
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\src\ASTInterpreter.h" />
+ <ClInclude Include="..\src\ASTPrinter.h" />
+ <ClInclude Include="..\src\CommonTypes.h" />
<ClInclude Include="..\src\Expression.h" />
+ <ClInclude Include="..\src\ExpressionDefinitions.h" />
<ClInclude Include="..\src\ExpressionsFwd.h" />
- <ClInclude Include="..\src\ASTPrinter.h" />
<ClInclude Include="..\src\ExpressionVisitor.h" />
<ClInclude Include="..\src\Lexer.h" />
- <ClInclude Include="..\src\CommonTypes.h" />
- <ClInclude Include="..\src\ExpressionDefinitions.h" />
<ClInclude Include="..\src\Parser.h" />
</ItemGroup>
<ItemGroup>
- <ClCompile Include="..\src\Lexer.cpp">
- </ClCompile>
<ClCompile Include="..\src\ASTInterpreter.cpp">
</ClCompile>
+ <ClCompile Include="..\src\ASTPrinter.cpp">
+ </ClCompile>
<ClCompile Include="..\src\Expression.cpp">
</ClCompile>
- <ClCompile Include="..\src\ASTPrinter.cpp">
+ <ClCompile Include="..\src\Lexer.cpp">
</ClCompile>
<ClCompile Include="..\src\Parser.cpp">
</ClCompile>
diff --git a/JSImpl/solution/JSLib.vcxproj.filters b/JSImpl/solution/JSLib.vcxproj.filters
index a5801c7..afcbbb9 100644
--- a/JSImpl/solution/JSLib.vcxproj.filters
+++ b/JSImpl/solution/JSLib.vcxproj.filters
@@ -9,25 +9,25 @@
<ClInclude Include="..\src\ASTInterpreter.h">
<Filter>src</Filter>
</ClInclude>
- <ClInclude Include="..\src\Expression.h">
+ <ClInclude Include="..\src\ASTPrinter.h">
<Filter>src</Filter>
</ClInclude>
- <ClInclude Include="..\src\ExpressionsFwd.h">
+ <ClInclude Include="..\src\CommonTypes.h">
<Filter>src</Filter>
</ClInclude>
- <ClInclude Include="..\src\ASTPrinter.h">
+ <ClInclude Include="..\src\Expression.h">
<Filter>src</Filter>
</ClInclude>
- <ClInclude Include="..\src\ExpressionVisitor.h">
+ <ClInclude Include="..\src\ExpressionDefinitions.h">
<Filter>src</Filter>
</ClInclude>
- <ClInclude Include="..\src\Lexer.h">
+ <ClInclude Include="..\src\ExpressionsFwd.h">
<Filter>src</Filter>
</ClInclude>
- <ClInclude Include="..\src\CommonTypes.h">
+ <ClInclude Include="..\src\ExpressionVisitor.h">
<Filter>src</Filter>
</ClInclude>
- <ClInclude Include="..\src\ExpressionDefinitions.h">
+ <ClInclude Include="..\src\Lexer.h">
<Filter>src</Filter>
</ClInclude>
<ClInclude Include="..\src\Parser.h">
@@ -35,16 +35,16 @@
</ClInclude>
</ItemGroup>
<ItemGroup>
- <ClCompile Include="..\src\Lexer.cpp">
+ <ClCompile Include="..\src\ASTInterpreter.cpp">
<Filter>src</Filter>
</ClCompile>
- <ClCompile Include="..\src\ASTInterpreter.cpp">
+ <ClCompile Include="..\src\ASTPrinter.cpp">
<Filter>src</Filter>
</ClCompile>
<ClCompile Include="..\src\Expression.cpp">
<Filter>src</Filter>
</ClCompile>
- <ClCompile Include="..\src\ASTPrinter.cpp">
+ <ClCompile Include="..\src\Lexer.cpp">
<Filter>src</Filter>
</ClCompile>
<ClCompile Include="..\src\Parser.cpp">
diff --git a/JSImpl/solution/Makefile b/JSImpl/solution/Makefile
index b920fc7..00cafb3 100644
--- a/JSImpl/solution/Makefile
+++ b/JSImpl/solution/Makefile
@@ -6,21 +6,13 @@ ifndef config
endif
export config
-PROJECTS := JSImpl JSLib Test gmock gtest gtest_main spasm sprt sprun
+PROJECTS := JSImpl JSLib Test gmock gtest gtest_main spasm spasm_lib sprt sprun
.PHONY: all clean help $(PROJECTS)
all: $(PROJECTS)
-JSLib:
- @echo "==== Building JSLib ($(config)) ===="
- @${MAKE} --no-print-directory -C . -f JSLib.make
-
-JSImpl: JSLib
- @echo "==== Building JSImpl ($(config)) ===="
- @${MAKE} --no-print-directory -C . -f JSImpl.make
-
-Test: sprt JSLib gtest gmock gtest_main
+Test: sprt spasm_lib JSLib gtest gmock gtest_main
@echo "==== Building Test ($(config)) ===="
@${MAKE} --no-print-directory -C ../test -f Test.make
@@ -36,11 +28,23 @@ gtest_main:
@echo "==== Building gtest_main ($(config)) ===="
@${MAKE} --no-print-directory -C ../test -f gtest_main.make
+JSLib:
+ @echo "==== Building JSLib ($(config)) ===="
+ @${MAKE} --no-print-directory -C . -f JSLib.make
+
+JSImpl: JSLib
+ @echo "==== Building JSImpl ($(config)) ===="
+ @${MAKE} --no-print-directory -C . -f JSImpl.make
+
sprt:
@echo "==== Building sprt ($(config)) ===="
@${MAKE} --no-print-directory -C ../../spasm/solution -f sprt.make
-spasm:
+spasm_lib:
+ @echo "==== Building spasm_lib ($(config)) ===="
+ @${MAKE} --no-print-directory -C ../../spasm/solution -f spasm_lib.make
+
+spasm: spasm_lib
@echo "==== Building spasm ($(config)) ===="
@${MAKE} --no-print-directory -C ../../spasm/solution -f spasm.make
@@ -49,13 +53,14 @@ sprun: sprt
@${MAKE} --no-print-directory -C ../../spasm/solution -f sprun.make
clean:
- @${MAKE} --no-print-directory -C . -f JSLib.make clean
- @${MAKE} --no-print-directory -C . -f JSImpl.make clean
@${MAKE} --no-print-directory -C ../test -f Test.make clean
@${MAKE} --no-print-directory -C ../test -f gtest.make clean
@${MAKE} --no-print-directory -C ../test -f gmock.make clean
@${MAKE} --no-print-directory -C ../test -f gtest_main.make clean
+ @${MAKE} --no-print-directory -C . -f JSLib.make clean
+ @${MAKE} --no-print-directory -C . -f JSImpl.make clean
@${MAKE} --no-print-directory -C ../../spasm/solution -f sprt.make clean
+ @${MAKE} --no-print-directory -C ../../spasm/solution -f spasm_lib.make clean
@${MAKE} --no-print-directory -C ../../spasm/solution -f spasm.make clean
@${MAKE} --no-print-directory -C ../../spasm/solution -f sprun.make clean
@@ -69,13 +74,14 @@ help:
@echo "TARGETS:"
@echo " all (default)"
@echo " clean"
- @echo " JSLib"
- @echo " JSImpl"
@echo " Test"
@echo " gtest"
@echo " gmock"
@echo " gtest_main"
+ @echo " JSLib"
+ @echo " JSImpl"
@echo " sprt"
+ @echo " spasm_lib"
@echo " spasm"
@echo " sprun"
@echo ""
diff --git a/JSImpl/solution/genie.lua b/JSImpl/solution/genie.lua
index 28a8515..aa5889d 100644
--- a/JSImpl/solution/genie.lua
+++ b/JSImpl/solution/genie.lua
@@ -24,21 +24,24 @@ solution 'JSImpl'
objdir(root .. 'obj/Release')
configuration '*'
- project 'JSLib'
- kind 'StaticLib'
- language 'C++'
- uuid(os.uuid('JSLib'))
- files '../src/*.cpp'
- removefiles '../src/main.cpp'
- files '../src/*.h'
-
- project 'JSImpl'
- kind 'ConsoleApp'
- language 'C++'
- uuid(os.uuid('JSImpl'))
- files '../src/main.cpp'
- links 'JSLib'
-
include '../test'
- include '../../spasm/solution/'
startproject 'Test'
+
+ group 'JSImpl'
+ project 'JSLib'
+ kind 'StaticLib'
+ language 'C++'
+ uuid(os.uuid('JSLib'))
+ files '../src/*.cpp'
+ removefiles '../src/main.cpp'
+ files '../src/*.h'
+
+ project 'JSImpl'
+ kind 'ConsoleApp'
+ language 'C++'
+ uuid(os.uuid('JSImpl'))
+ files '../src/main.cpp'
+ links 'JSLib'
+
+ group 'Spasm'
+ include '../../spasm/solution/'
diff --git a/JSImpl/test/Test.make b/JSImpl/test/Test.make
index 4540d2d..e1a6ad4 100644
--- a/JSImpl/test/Test.make
+++ b/JSImpl/test/Test.make
@@ -47,7 +47,7 @@ ifeq ($(config),debug64)
TARGETDIR = ../build/bin/Debug
TARGET = $(TARGETDIR)/Test
DEFINES += -D_SCL_SECURE_NO_WARNINGS
- INCLUDES += -I"googletest/googletest/include" -I"googletest/googlemock/include" -I".." -I"../../spasm/src"
+ INCLUDES += -I"googletest/googletest/include" -I"googletest/googlemock/include" -I".." -I"../../spasm/src" -I"../../spasm/src/asm"
ALL_CPPFLAGS += $(CPPFLAGS) -MMD -MP -MP $(DEFINES) $(INCLUDES)
ALL_ASMFLAGS += $(ASMFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH) -Werror -Wall -Wextra -g -m64
ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH) -Werror -Wall -Wextra -g -m64
@@ -56,7 +56,7 @@ ifeq ($(config),debug64)
ALL_OBJCPPFLAGS += $(CXXFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH) -Werror -Wall -Wextra -g -m64 -std=c++14
ALL_RESFLAGS += $(RESFLAGS) $(DEFINES) $(INCLUDES)
ALL_LDFLAGS += $(LDFLAGS) -L"../build/bin/Debug" -L"." -m64
- LDDEPS += ../build/bin/Debug/libsprt.a ../build/bin/Debug/libJSLib.a ../build/bin/Debug/libgtest.a ../build/bin/Debug/libgmock.a ../build/bin/Debug/libgtest_main.a
+ LDDEPS += ../build/bin/Debug/libsprt.a ../build/bin/Debug/libspasm_lib.a ../build/bin/Debug/libJSLib.a ../build/bin/Debug/libgtest.a ../build/bin/Debug/libgmock.a ../build/bin/Debug/libgtest_main.a
LIBS += $(LDDEPS) -lpthread
EXTERNAL_LIBS +=
LINKOBJS = $(OBJECTS)
@@ -80,7 +80,7 @@ ifeq ($(config),release64)
TARGETDIR = ../build/bin/Release
TARGET = $(TARGETDIR)/Test
DEFINES += -D_SCL_SECURE_NO_WARNINGS
- INCLUDES += -I"googletest/googletest/include" -I"googletest/googlemock/include" -I".." -I"../../spasm/src"
+ INCLUDES += -I"googletest/googletest/include" -I"googletest/googlemock/include" -I".." -I"../../spasm/src" -I"../../spasm/src/asm"
ALL_CPPFLAGS += $(CPPFLAGS) -MMD -MP -MP $(DEFINES) $(INCLUDES)
ALL_ASMFLAGS += $(ASMFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH) -Werror -Wall -Wextra -g -O3 -m64
ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH) -Werror -Wall -Wextra -g -O3 -m64
@@ -89,7 +89,7 @@ ifeq ($(config),release64)
ALL_OBJCPPFLAGS += $(CXXFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH) -Werror -Wall -Wextra -g -O3 -m64 -std=c++14
ALL_RESFLAGS += $(RESFLAGS) $(DEFINES) $(INCLUDES)
ALL_LDFLAGS += $(LDFLAGS) -L"../build/bin/Release" -L"." -m64
- LDDEPS += ../build/bin/Release/libsprt.a ../build/bin/Release/libJSLib.a ../build/bin/Release/libgtest.a ../build/bin/Release/libgmock.a ../build/bin/Release/libgtest_main.a
+ LDDEPS += ../build/bin/Release/libsprt.a ../build/bin/Release/libspasm_lib.a ../build/bin/Release/libJSLib.a ../build/bin/Release/libgtest.a ../build/bin/Release/libgmock.a ../build/bin/Release/libgtest_main.a
LIBS += $(LDDEPS) -lpthread
EXTERNAL_LIBS +=
LINKOBJS = $(OBJECTS)
diff --git a/JSImpl/test/Test.vcxproj b/JSImpl/test/Test.vcxproj
index 3a7058a..c099f1c 100644
--- a/JSImpl/test/Test.vcxproj
+++ b/JSImpl/test/Test.vcxproj
@@ -57,7 +57,7 @@
<ClCompile>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>googletest\googletest\include;googletest\googlemock\include;..;..\..\spasm\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>googletest\googletest\include;googletest\googlemock\include;..;..\..\spasm\src;..\..\spasm\src\asm;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>false</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
@@ -72,7 +72,7 @@
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>googletest\googletest\include;googletest\googlemock\include;..;..\..\spasm\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>googletest\googletest\include;googletest\googlemock\include;..;..\..\spasm\src;..\..\spasm\src\asm;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
<SubSystem>Console</SubSystem>
@@ -87,7 +87,7 @@
<ClCompile>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<Optimization>MaxSpeed</Optimization>
- <AdditionalIncludeDirectories>googletest\googletest\include;googletest\googlemock\include;..;..\..\spasm\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>googletest\googletest\include;googletest\googlemock\include;..;..\..\spasm\src;..\..\spasm\src\asm;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>false</MinimalRebuild>
<StringPooling>true</StringPooling>
@@ -102,7 +102,7 @@
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>googletest\googletest\include;googletest\googlemock\include;..;..\..\spasm\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>googletest\googletest\include;googletest\googlemock\include;..;..\..\spasm\src;..\..\spasm\src\asm;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
<SubSystem>Console</SubSystem>
@@ -129,6 +129,9 @@
<ProjectReference Include="..\..\spasm\solution\sprt.vcxproj">
<Project>{AE0A9E7C-9A41-9F0D-432E-85102F441B0F}</Project>
</ProjectReference>
+ <ProjectReference Include="..\..\spasm\solution\spasm_lib.vcxproj">
+ <Project>{3F16CDE1-AB80-8158-F4BE-32FE60685FAD}</Project>
+ </ProjectReference>
<ProjectReference Include="..\solution\JSLib.vcxproj">
<Project>{19EA680D-85FE-90BE-4E80-341EBA538DEF}</Project>
</ProjectReference>
diff --git a/JSImpl/test/genie.lua b/JSImpl/test/genie.lua
index ba0f0c2..c3cd1d6 100644
--- a/JSImpl/test/genie.lua
+++ b/JSImpl/test/genie.lua
@@ -10,9 +10,11 @@ project 'Test'
'googletest/googlemock/include',
'..',
'../../spasm/src',
+ '../../spasm/src/asm',
}
links {
'sprt',
+ 'spasm_lib',
'JSLib',
'gtest',
'gmock',
@@ -22,35 +24,36 @@ project 'Test'
links 'pthread'
configuration '*'
-project 'gtest'
- kind 'StaticLib'
- language 'C++'
- uuid(os.uuid('gtest'))
- files 'googletest/googletest/src/gtest-all.cc'
- files 'googletest/googletest/include/gtest/*.h'
- includedirs {
- 'googletest/googletest',
- 'googletest/googletest/include',
- }
+group 'gtest'
+ project 'gtest'
+ kind 'StaticLib'
+ language 'C++'
+ uuid(os.uuid('gtest'))
+ files 'googletest/googletest/src/gtest-all.cc'
+ files 'googletest/googletest/include/gtest/*.h'
+ includedirs {
+ 'googletest/googletest',
+ 'googletest/googletest/include',
+ }
-project 'gmock'
- kind 'StaticLib'
- language 'C++'
- uuid(os.uuid('gmock'))
- files 'googletest/googlemock/src/gmock-all.cc'
- files 'googletest/googlemock/include/gmock/*.h'
- includedirs {
- 'googletest/googlemock',
- 'googletest/googlemock/include',
- 'googletest/googletest/include',
- }
+ project 'gmock'
+ kind 'StaticLib'
+ language 'C++'
+ uuid(os.uuid('gmock'))
+ files 'googletest/googlemock/src/gmock-all.cc'
+ files 'googletest/googlemock/include/gmock/*.h'
+ includedirs {
+ 'googletest/googlemock',
+ 'googletest/googlemock/include',
+ 'googletest/googletest/include',
+ }
-project 'gtest_main'
- kind 'StaticLib'
- language 'C++'
- uuid(os.uuid('gtest_main'))
- files 'googletest/googletest/src/gtest_main.cc'
- includedirs {
- 'googletest/googletest',
- 'googletest/googletest/include',
- }
+ project 'gtest_main'
+ kind 'StaticLib'
+ language 'C++'
+ uuid(os.uuid('gtest_main'))
+ files 'googletest/googletest/src/gtest_main.cc'
+ includedirs {
+ 'googletest/googletest',
+ 'googletest/googletest/include',
+ }
diff --git a/JSImpl/test/gmock.vcxproj b/JSImpl/test/gmock.vcxproj
index 8fbaa69..f4e2bec 100644
--- a/JSImpl/test/gmock.vcxproj
+++ b/JSImpl/test/gmock.vcxproj
@@ -21,11 +21,13 @@
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
@@ -114,17 +116,17 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
- <ClInclude Include="googletest\googlemock\include\gmock\gmock-spec-builders.h" />
- <ClInclude Include="googletest\googlemock\include\gmock\gmock.h" />
<ClInclude Include="googletest\googlemock\include\gmock\gmock-actions.h" />
- <ClInclude Include="googletest\googlemock\include\gmock\gmock-generated-matchers.h" />
+ <ClInclude Include="googletest\googlemock\include\gmock\gmock-cardinalities.h" />
<ClInclude Include="googletest\googlemock\include\gmock\gmock-generated-actions.h" />
- <ClInclude Include="googletest\googlemock\include\gmock\gmock-more-matchers.h" />
<ClInclude Include="googletest\googlemock\include\gmock\gmock-generated-function-mockers.h" />
- <ClInclude Include="googletest\googlemock\include\gmock\gmock-cardinalities.h" />
+ <ClInclude Include="googletest\googlemock\include\gmock\gmock-generated-matchers.h" />
<ClInclude Include="googletest\googlemock\include\gmock\gmock-generated-nice-strict.h" />
- <ClInclude Include="googletest\googlemock\include\gmock\gmock-more-actions.h" />
<ClInclude Include="googletest\googlemock\include\gmock\gmock-matchers.h" />
+ <ClInclude Include="googletest\googlemock\include\gmock\gmock-more-actions.h" />
+ <ClInclude Include="googletest\googlemock\include\gmock\gmock-more-matchers.h" />
+ <ClInclude Include="googletest\googlemock\include\gmock\gmock-spec-builders.h" />
+ <ClInclude Include="googletest\googlemock\include\gmock\gmock.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="googletest\googlemock\src\gmock-all.cc">
diff --git a/JSImpl/test/gmock.vcxproj.filters b/JSImpl/test/gmock.vcxproj.filters
index 01914f2..7ecdd12 100644
--- a/JSImpl/test/gmock.vcxproj.filters
+++ b/JSImpl/test/gmock.vcxproj.filters
@@ -18,37 +18,37 @@
</Filter>
</ItemGroup>
<ItemGroup>
- <ClInclude Include="googletest\googlemock\include\gmock\gmock-spec-builders.h">
+ <ClInclude Include="googletest\googlemock\include\gmock\gmock-actions.h">
<Filter>googletest\googlemock\include\gmock</Filter>
</ClInclude>
- <ClInclude Include="googletest\googlemock\include\gmock\gmock.h">
+ <ClInclude Include="googletest\googlemock\include\gmock\gmock-cardinalities.h">
<Filter>googletest\googlemock\include\gmock</Filter>
</ClInclude>
- <ClInclude Include="googletest\googlemock\include\gmock\gmock-actions.h">
+ <ClInclude Include="googletest\googlemock\include\gmock\gmock-generated-actions.h">
<Filter>googletest\googlemock\include\gmock</Filter>
</ClInclude>
- <ClInclude Include="googletest\googlemock\include\gmock\gmock-generated-matchers.h">
+ <ClInclude Include="googletest\googlemock\include\gmock\gmock-generated-function-mockers.h">
<Filter>googletest\googlemock\include\gmock</Filter>
</ClInclude>
- <ClInclude Include="googletest\googlemock\include\gmock\gmock-generated-actions.h">
+ <ClInclude Include="googletest\googlemock\include\gmock\gmock-generated-matchers.h">
<Filter>googletest\googlemock\include\gmock</Filter>
</ClInclude>
- <ClInclude Include="googletest\googlemock\include\gmock\gmock-more-matchers.h">
+ <ClInclude Include="googletest\googlemock\include\gmock\gmock-generated-nice-strict.h">
<Filter>googletest\googlemock\include\gmock</Filter>
</ClInclude>
- <ClInclude Include="googletest\googlemock\include\gmock\gmock-generated-function-mockers.h">
+ <ClInclude Include="googletest\googlemock\include\gmock\gmock-matchers.h">
<Filter>googletest\googlemock\include\gmock</Filter>
</ClInclude>
- <ClInclude Include="googletest\googlemock\include\gmock\gmock-cardinalities.h">
+ <ClInclude Include="googletest\googlemock\include\gmock\gmock-more-actions.h">
<Filter>googletest\googlemock\include\gmock</Filter>
</ClInclude>
- <ClInclude Include="googletest\googlemock\include\gmock\gmock-generated-nice-strict.h">
+ <ClInclude Include="googletest\googlemock\include\gmock\gmock-more-matchers.h">
<Filter>googletest\googlemock\include\gmock</Filter>
</ClInclude>
- <ClInclude Include="googletest\googlemock\include\gmock\gmock-more-actions.h">
+ <ClInclude Include="googletest\googlemock\include\gmock\gmock-spec-builders.h">
<Filter>googletest\googlemock\include\gmock</Filter>
</ClInclude>
- <ClInclude Include="googletest\googlemock\include\gmock\gmock-matchers.h">
+ <ClInclude Include="googletest\googlemock\include\gmock\gmock.h">
<Filter>googletest\googlemock\include\gmock</Filter>
</ClInclude>
</ItemGroup>
diff --git a/JSImpl/test/gtest.vcxproj b/JSImpl/test/gtest.vcxproj
index 623e8f5..7adfade 100644
--- a/JSImpl/test/gtest.vcxproj
+++ b/JSImpl/test/gtest.vcxproj
@@ -21,11 +21,13 @@
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
@@ -114,16 +116,16 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
- <ClInclude Include="googletest\googletest\include\gtest\gtest_prod.h" />
+ <ClInclude Include="googletest\googletest\include\gtest\gtest-death-test.h" />
<ClInclude Include="googletest\googletest\include\gtest\gtest-message.h" />
<ClInclude Include="googletest\googletest\include\gtest\gtest-param-test.h" />
- <ClInclude Include="googletest\googletest\include\gtest\gtest-test-part.h" />
<ClInclude Include="googletest\googletest\include\gtest\gtest-printers.h" />
- <ClInclude Include="googletest\googletest\include\gtest\gtest-typed-test.h" />
<ClInclude Include="googletest\googletest\include\gtest\gtest-spi.h" />
- <ClInclude Include="googletest\googletest\include\gtest\gtest_pred_impl.h" />
+ <ClInclude Include="googletest\googletest\include\gtest\gtest-test-part.h" />
+ <ClInclude Include="googletest\googletest\include\gtest\gtest-typed-test.h" />
<ClInclude Include="googletest\googletest\include\gtest\gtest.h" />
- <ClInclude Include="googletest\googletest\include\gtest\gtest-death-test.h" />
+ <ClInclude Include="googletest\googletest\include\gtest\gtest_pred_impl.h" />
+ <ClInclude Include="googletest\googletest\include\gtest\gtest_prod.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="googletest\googletest\src\gtest-all.cc">
diff --git a/JSImpl/test/gtest.vcxproj.filters b/JSImpl/test/gtest.vcxproj.filters
index 780060b..3a35c75 100644
--- a/JSImpl/test/gtest.vcxproj.filters
+++ b/JSImpl/test/gtest.vcxproj.filters
@@ -18,7 +18,7 @@
</Filter>
</ItemGroup>
<ItemGroup>
- <ClInclude Include="googletest\googletest\include\gtest\gtest_prod.h">
+ <ClInclude Include="googletest\googletest\include\gtest\gtest-death-test.h">
<Filter>googletest\googletest\include\gtest</Filter>
</ClInclude>
<ClInclude Include="googletest\googletest\include\gtest\gtest-message.h">
@@ -27,25 +27,25 @@
<ClInclude Include="googletest\googletest\include\gtest\gtest-param-test.h">
<Filter>googletest\googletest\include\gtest</Filter>
</ClInclude>
- <ClInclude Include="googletest\googletest\include\gtest\gtest-test-part.h">
- <Filter>googletest\googletest\include\gtest</Filter>
- </ClInclude>
<ClInclude Include="googletest\googletest\include\gtest\gtest-printers.h">
<Filter>googletest\googletest\include\gtest</Filter>
</ClInclude>
- <ClInclude Include="googletest\googletest\include\gtest\gtest-typed-test.h">
+ <ClInclude Include="googletest\googletest\include\gtest\gtest-spi.h">
<Filter>googletest\googletest\include\gtest</Filter>
</ClInclude>
- <ClInclude Include="googletest\googletest\include\gtest\gtest-spi.h">
+ <ClInclude Include="googletest\googletest\include\gtest\gtest-test-part.h">
<Filter>googletest\googletest\include\gtest</Filter>
</ClInclude>
- <ClInclude Include="googletest\googletest\include\gtest\gtest_pred_impl.h">
+ <ClInclude Include="googletest\googletest\include\gtest\gtest-typed-test.h">
<Filter>googletest\googletest\include\gtest</Filter>
</ClInclude>
<ClInclude Include="googletest\googletest\include\gtest\gtest.h">
<Filter>googletest\googletest\include\gtest</Filter>
</ClInclude>
- <ClInclude Include="googletest\googletest\include\gtest\gtest-death-test.h">
+ <ClInclude Include="googletest\googletest\include\gtest\gtest_pred_impl.h">
+ <Filter>googletest\googletest\include\gtest</Filter>
+ </ClInclude>
+ <ClInclude Include="googletest\googletest\include\gtest\gtest_prod.h">
<Filter>googletest\googletest\include\gtest</Filter>
</ClInclude>
</ItemGroup>
diff --git a/JSImpl/test/gtest_main.vcxproj b/JSImpl/test/gtest_main.vcxproj
index 997d941..2ce7ce4 100644
--- a/JSImpl/test/gtest_main.vcxproj
+++ b/JSImpl/test/gtest_main.vcxproj
@@ -21,11 +21,13 @@
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
diff --git a/JSImpl/test/sprtTests.cpp b/JSImpl/test/sprtTests.cpp
index 7621ca3..eef7147 100644
--- a/JSImpl/test/sprtTests.cpp
+++ b/JSImpl/test/sprtTests.cpp
@@ -1,6 +1,7 @@
#include <gtest/gtest.h>
#include <spasm.hpp>
+#include <assembler.hpp>
#include <sstream>
using Spasm::OpCodes;
@@ -9,12 +10,12 @@ struct SPRTTest : public ::testing::Test
{
typedef std::vector<Spasm::byte> ByteCode;
- void Run(ByteCode& code)
+ void Run(const ByteCode& code)
{
Run(code.data(), code.size());
}
- void Run(Spasm::byte* bytecode, size_t size)
+ void Run(const Spasm::byte* bytecode, size_t size)
{
VM.Initialize(size, bytecode, Input, Output);
ASSERT_EQ(Spasm::Spasm::RunResult::Success, VM.run());
@@ -27,6 +28,19 @@ struct SPRTTest : public ::testing::Test
std::ostringstream Output;
};
+struct SPASMTest : public SPRTTest
+{
+ void CompileAndRun(const std::string& program)
+ {
+ SpasmImpl::ASM::Bytecode_Memory bytecode;
+ std::istringstream programInput;
+ programInput.str(program);
+ ASSERT_TRUE(SpasmImpl::ASM::compile(programInput, bytecode))
+ << "Could not compile the program:" << std::endl << program;
+ Run(bytecode.bytecode());
+ }
+};
+
TEST_F(SPRTTest, Empty)
{
}
@@ -184,22 +198,22 @@ TEST_F(SPRTTest, JumpFalse)
TEST_F(SPRTTest, Call)
{
Spasm::byte bytecode[] = {
- OpCodes::Alloc, 5, // 2
+ OpCodes::Push, 5, // 2
OpCodes::Const, 1, 0, // 5
OpCodes::Const, 2, 6, // 8
OpCodes::Const, 3, 7, // 11
OpCodes::Const, 4, 2, // 14
- OpCodes::Push, 3, // 16
- OpCodes::Push, 2, // 18
- OpCodes::Push, 4, // 20
+ OpCodes::PushFrom, 3, // 16
+ OpCodes::PushFrom, 2, // 18
+ OpCodes::PushFrom, 4, // 20
OpCodes::Call, 25, // 22
OpCodes::Print, 4, // 24
- OpCodes::Halt, // 25
+ OpCodes::Halt, // 25
OpCodes::Print, 0, // 27
OpCodes::Print, -1, // 29
OpCodes::Print, -2, // 31
OpCodes::Mul, 1, -2, -1,// 33
- OpCodes::Ret, 1, // 35
+ OpCodes::Ret, 1, // 35
};
Run(bytecode, sizeof(bytecode));
@@ -218,3 +232,81 @@ TEST_F(SPRTTest, Read)
ASSERT_EQ(Output.str(), "42");
}
+TEST_F(SPASMTest, RSyntax)
+{
+ const char* program =
+ "push 5" "\n"
+ "const r1 0" "\n"
+ "const r2 6" "\n"
+ "const r3 7" "\n"
+ "const r4 2" "\n"
+ "pushr r3" "\n"
+ "pushr r2" "\n"
+ "pushr r4" "\n"
+ "call mult" "\n"
+ "popr r1" "\n"
+ "print r1" "\n"
+ "halt" "\n"
+ "label mult" "\n"
+ "print a0" "\n"
+ "print a1" "\n"
+ "print a2" "\n"
+ "mul r1 a2 a1" "\n"
+ "ret r1" "\n"
+ ""
+ ;
+ CompileAndRun(program);
+ ASSERT_EQ(Output.str(), "26742");
+}
+
+TEST_F(SPASMTest, Call)
+{
+ const char* program =
+ "push 5" "\n"
+ "const 1 0" "\n"
+ "const 2 6" "\n"
+ "const 3 7" "\n"
+ "const 4 2" "\n"
+ "pushr 3" "\n"
+ "pushr 2" "\n"
+ "pushr 4" "\n"
+ "call mult" "\n"
+ "print 4" "\n"
+ "halt" "\n"
+ "label mult" "\n"
+ "print 0" "\n"
+ "print -1" "\n"
+ "print -2" "\n"
+ "mul 1 -2 -1" "\n"
+ "ret 1" "\n"
+ ""
+ ;
+ CompileAndRun(program);
+ ASSERT_EQ(Output.str(), "26742");
+}
+
+TEST_F(SPASMTest, GCD)
+{
+ const char* program =
+ "push 3" "\n"
+ "read 1" "\n"
+ "read 2" "\n"
+ "label loop" "\n"
+ "less 3 1 2" "\n"
+ "jmpt 3 sub_ba" "\n"
+ "less 3 2 1" "\n"
+ "jmpt 3 sub_ab" "\n"
+ "print 1" "\n"
+ "halt" "\n"
+ "label sub_ab" "\n"
+ "sub 1 1 2" "\n"
+ "jmp loop" "\n"
+ "label sub_ba" "\n"
+ "sub 2 2 1" "\n"
+ "jmp loop" "\n"
+ ""
+ ;
+ Input.str("21 12");
+ CompileAndRun(program);
+ ASSERT_EQ(Output.str(), "3");
+}