From d5d64bb2547b4450420daced7a7e97efb160dcce Mon Sep 17 00:00:00 2001 From: Jeremiah Orians Date: Sat, 9 Mar 2019 15:25:29 -0500 Subject: [PATCH] knight-posix is now fully supported --- CHANGELOG.org | 2 +- cc_core.c | 10 +++--- makefile | 4 +++ test/common_knight/libc-core.M1 | 7 +++-- test/test.answers | 55 +++++++++++++++++---------------- test/test100/proof.answer | 2 +- 6 files changed, 44 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.org b/CHANGELOG.org index 6628e95..8874e0a 100644 --- a/CHANGELOG.org +++ b/CHANGELOG.org @@ -26,7 +26,7 @@ Added support for octal and binary numbers Added support for \0 Added support for GET_MACHINE_FLAGS in tests Added --architecture flag -Added 23/24 working tests for knight-posix +Added 24/24 working tests for knight-posix Added working HEAP/malloc to knight-posix ** Changed diff --git a/cc_core.c b/cc_core.c index 71dca2c..c703189 100644 --- a/cc_core.c +++ b/cc_core.c @@ -169,9 +169,9 @@ void function_call(char* s, int bool) if(KNIGHT_POSIX == Architecture) { emit_out("MOVE R14 R13\n"); - emit_out("CALLI R15 @FUNCTION_"); + emit_out("LOADR R0 4\nJUMP 4\n&FUNCTION_"); emit_out(s); - emit_out("\n"); + emit_out("\nCALL R0 R15\n"); } else if(X86 == Architecture) { @@ -237,7 +237,7 @@ void function_load(struct token_list* a) return; } - if(KNIGHT_POSIX == Architecture) emit_out("LOADUI R0 $FUNCTION_"); + if(KNIGHT_POSIX == Architecture) emit_out("LOADR R0 4\nJUMP 4\n&FUNCTION_"); else if(X86 == Architecture) emit_out("LOAD_IMMEDIATE_eax &FUNCTION_"); emit_out(a->s); emit_out("\n"); @@ -246,7 +246,7 @@ void function_load(struct token_list* a) void global_load(struct token_list* a) { current_target = a->type; - if(KNIGHT_POSIX == Architecture) emit_out("LOADUI R0 $GLOBAL_"); + if(KNIGHT_POSIX == Architecture) emit_out("LOADR R0 4\nJUMP 4\n&GLOBAL_"); else if(X86 == Architecture) emit_out("LOAD_IMMEDIATE_eax &GLOBAL_"); emit_out(a->s); emit_out("\n"); @@ -280,7 +280,7 @@ void primary_expr_string() { char* number_string = numerate_number(current_count); current_count = current_count + 1; - if(KNIGHT_POSIX == Architecture) emit_out("LOADUI R0 $STRING_"); + if(KNIGHT_POSIX == Architecture) emit_out("LOADR R0 4\nJUMP 4\n&STRING_"); else if(X86 == Architecture) emit_out("LOAD_IMMEDIATE_eax &STRING_"); uniqueID_out(function->s, number_string); diff --git a/makefile b/makefile index 06053f2..be54a1f 100644 --- a/makefile +++ b/makefile @@ -88,6 +88,7 @@ test: test00-knight-posix-binary \ test23-knight-posix-binary \ test24-knight-posix-binary \ test99-knight-posix-binary \ + test100-knight-posix-binary \ test00-x86-binary \ test01-x86-binary \ test02-x86-binary \ @@ -195,6 +196,9 @@ test24-knight-posix-binary: M2-Planet | results test99-knight-posix-binary: M2-Planet | results test/test99/hello-knight-posix.sh +test100-knight-posix-binary: M2-Planet | results + test/test100/hello-knight-posix.sh + test00-x86-binary: M2-Planet | results test/test00/hello-x86.sh diff --git a/test/common_knight/libc-core.M1 b/test/common_knight/libc-core.M1 index 2009534..9ee83a2 100644 --- a/test/common_knight/libc-core.M1 +++ b/test/common_knight/libc-core.M1 @@ -24,11 +24,14 @@ SUBI R14 R15 16 ; Set our base pointer ;; Perform the main loop - CALLI R15 @FUNCTION_main + LOADR R0 4 + JUMP 4 + &FUNCTION_main + CALL R0 R15 ;; Exit to kernel EXIT ; Return what is in R0 ;; Our default heap pointer :HEAP - '00080000' \ No newline at end of file + '00100000' diff --git a/test/test.answers b/test/test.answers index 8cc22de..79347b1 100644 --- a/test/test.answers +++ b/test/test.answers @@ -1,53 +1,54 @@ -ecb6e61a22a91dbb16dd38c39d4e96e0fe2fe08618870e73de952eba8407fde8 test/results/test00-knight-posix-binary +64879eebceb475f21e54cb1f2e872996ca80e8c1fbb8b5895fb5fb6bac0c4384 test/results/test00-knight-posix-binary c52562bd0aabb86ce8ca177f22f8d0455769b444df2d4d62894faab63b7151d8 test/results/test00-x86-binary -f9cd9d4163191ff823470ad9326d4781c9326df2ec30f67f3c4969b7ebd204d7 test/results/test01-knight-posix-binary +486ee05ccea796a9cfa9bfb23189b8e014b7ce8d14fea03b27d679d410fe17dd test/results/test01-knight-posix-binary eae96857f2b6d8e8ba86ac06e72345ea572622b358b23978bb5f2db1baadf41c test/results/test01-x86-binary -c44f7bf03b04597407d7799240621cd2f8ab4c7f493d9b387457b9bcab474abe test/results/test02-knight-posix-binary +e6493845b9e94a617649638252f23502f9212de583fd00cba6cc07fffd296e32 test/results/test02-knight-posix-binary 8ead336d2f3f72d5874230492e0472edec61d355905e8636e3dfb2731695037c test/results/test02-x86-binary -029d1612a23dca14be326f1e59b799d7bb32146f93d429b3fe562485ef9d3e2b test/results/test03-knight-posix-binary +96849d5a9294799a9648c24db21b2dab1555dd5ba69d172d77df800622347226 test/results/test03-knight-posix-binary 2313cb3f1a2b9eb6bf15f8d43418e15d6c16f7f1b5c22700fdfc2b38beb59192 test/results/test03-x86-binary -34a3ab7245eb2b8b7d9ecb5c70910aab35f0251d92c83808d7bd351fcf3a1b53 test/results/test04-knight-posix-binary +df9ba08dfa69ac6cbb4483146dbbe079ef575d7de8318e2e52283151ebf24bd3 test/results/test04-knight-posix-binary b7ddb37063c541c6a315809c4438aa235d6702f54bb64f4ffc88dbe78617de81 test/results/test04-x86-binary -37fc203ef5cceeb990269cc9f1b2fc2048242d602c5e602c70085cf083695ba5 test/results/test05-knight-posix-binary +5db3a2fbd84150dae41e1c778f2822d053a0539cbdf59bba56e5514222f46674 test/results/test05-knight-posix-binary b5b76320ccda887a30b0bbefc2a5c302c8f2aa3c398d92ef3a79526690b25d6f test/results/test05-x86-binary -848c3a38b388ca6ac5365d479a4a2e38db66e352d325744a867883de3ef2b56b test/results/test06-knight-posix-binary +b177d769ae44c3509d9a08d0ee631ec69654dc5d723408bf0decdc67c42aae27 test/results/test06-knight-posix-binary 663fc6eefe965f237b6bf5a211398c8ae1210f97ff39b59603677e92462c68c7 test/results/test06-x86-binary -e2fd7b3828464283bd4047bc7b1fc0c293536901c8163f1ebabce5e7edc9cab3 test/results/test07-knight-posix-binary +9159c4ba8196b24ec78bc9ebfbc7066d510ddbf03461736e7795a48634134dc5 test/results/test07-knight-posix-binary a9a3e332d13ded5f80d7431f8717f26527b3722b33ea57760a9a5723dffc099c test/results/test07-x86-binary -1846f5dc1b565f9193551b75539bfd15648e569ad3030ac349c5ff6a477fd2e5 test/results/test08-knight-posix-binary +b824859fd0e39f1417742a1b9a1cec18ade78afdd80ce2c64cb54cdf7683f53a test/results/test08-knight-posix-binary f1c01feb865c4d552033186d9ce50dd39468a7e8aebf762886c13ad3e03b5011 test/results/test08-x86-binary -8d3a62bbec7b97712bf762279eca9a4cac19bc36856cf8bc2e71cfc4dae64c23 test/results/test09-knight-posix-binary +0feaacc13ad24c2b513fd9d46a58c38b1af57e77275c9a148cafb4a0d3cc7b7a test/results/test09-knight-posix-binary 3b39e72f3de90ed690adfaf6145af46157cef2ec5e72867ac577fa27a0229894 test/results/test09-x86-binary -4002710fb3ae948391cb9ad07615569ad66c9b3c725da50c9fbb213ca2ad365e test/results/test10-knight-posix-binary +c1b5a2a3cd46c5e95e5540e871c2a916e028684ca80f51c001ef489342e27625 test/results/test10-knight-posix-binary 020e86020819cc4963e6185b22e534fcf8306b6cb116f12643f254a24688ff0a test/results/test10-x86-binary -cfc679289c923122f70105359c458fc9c37223040f646402ba5596781f1b5392 test/results/test100-x86-binary -00e90d3873786cbd98ebf53e4497af74c3a5893a9155d101f01965b732c9fa73 test/results/test11-knight-posix-binary +36cff3352e2261db8d60ae939080c58407f86fea53e981e3dca786f129d25c27 test/results/test100-knight-posix-binary +81ac81971a4ad4bcc3c6e469c03472e5dca9d4cef8b110d76ca13cf7576a6ec1 test/results/test100-x86-binary +63fd5fbf389d1b19031026df193ec55e98d923b8568007125b80bc246c094496 test/results/test11-knight-posix-binary 3fd11bad4a426ce1ff8fd9c6d7d2b943effae9f3f5740b7376e426e9b0555851 test/results/test11-x86-binary -95d2b26308e9990770d051ab6329ff0271225de56bf48683dfc44ab819e93fb7 test/results/test12-knight-posix-binary +313536f9209d29d4c3b40f6ada898f81c1fb3b650ca1a84754f90b1db3b9e001 test/results/test12-knight-posix-binary f98ab8e4bb35580e0dde96126d7a56aff66bda208d02c8d89390b40d6cff591c test/results/test12-x86-binary -396f41af4f2c7a1b5609bd14bafd22a97fb01bf1e617212cabfc2de80efa1ed2 test/results/test13-knight-posix-binary +e50c97ba330823cb5cbe938bb9d1575340b083e60fc42db8edefcfd95851daa2 test/results/test13-knight-posix-binary 5051ffca2615144419f8ec1a5d4999486ae81e7781428f59e47e866af97cef92 test/results/test13-x86-binary -ac5d4a515eaaa9613e680660dff1d1431e3bcf8364705733f937eead57cba3a2 test/results/test14-knight-posix-binary +156fa1e6b5814da94a542dfe742f77e155d52724b34f75f3513b9e8f6f2503dd test/results/test14-knight-posix-binary a8218958b628066e2fda63d3933f1bf607c358d7bdfe84fc02596393698ea5f6 test/results/test14-x86-binary -fd2089fb70f04263db1c77850f01451ac62277fcf43396a26d77ab12f62778eb test/results/test15-knight-posix-binary +9f7c81e278248a3160d80a3f5ca0c39a5505ca9b45adc002e9b527db3e5f084a test/results/test15-knight-posix-binary 3adb4a5f3995583ba711151361728a26c3fbf0140864d13b4b042978ca45d683 test/results/test15-x86-binary -9535702c742f8cc1f080d6d73e74532e46b8c2b55ffceb45503353db861a470f test/results/test16-knight-posix-binary +84f5472ce5711b9cad28fcd4c177eea673047c2561ea010ccb6bf5f50d89c713 test/results/test16-knight-posix-binary d70e072f4f1f077d10ff65e9216ca8b423b996e35d68d208025db7a78b062f50 test/results/test16-x86-binary -e59bc15dc72b2cc9ad5d7c32049bb8685d8ee3c479300d036aea79b5daae27c3 test/results/test17-knight-posix-binary +0323ae8fa9e79cae9a58eec89a80b2c354db276d76c6f50b3bf50840327d4950 test/results/test17-knight-posix-binary 9b4ba350b07cc1cf4e12dc77d0d960ded1511f13b887363b0eb33421e2f626de test/results/test17-x86-binary -1914f1ee41d8b93a674302cb74476750c2d5adb72b4f500d55d857e07350791d test/results/test18-knight-posix-binary +d0f0b1428c8db70806d6e2e5b81aca4b6752c4a581a3fa83da064317ceb605b0 test/results/test18-knight-posix-binary 8de7384c4633b1d5c60bbbb298d7f4b738e52fbc266ef4ef9a48b3cb995e3176 test/results/test18-x86-binary -0b7143f4b5acf033c2e4cfb92b3b33207cb6192a1aa93cf3fcc0f6cdad08ecf1 test/results/test19-knight-posix-binary +32ba6ae74a8756fe4b95c65a643513bdd785778f98a878b3ea5459b5aaccaa38 test/results/test19-knight-posix-binary cefc5a53513abdb9069dc8bdb7b4529307420d5dd412a10112c3253bdcd29c46 test/results/test19-x86-binary -69431d7394bb562da4a1f52e1d99ddd76157adcf1d9cbbd8319f24d63cae1976 test/results/test20-knight-posix-binary +6a59795dbb4397d0efaf1ad613d646ec435eec62db30eb758bcf2499d651520e test/results/test20-knight-posix-binary 365c96fb8368710d620a76facd6bebcdeeb6f6d30ceaf0a6f1567fc3fcbe9b54 test/results/test20-x86-binary -610062cdfd9122450b52bb979ea867bb035be497ff6b1022bce71e289fa290de test/results/test21-knight-posix-binary +3c096914ca492c60bd53193fcc109549fae170052b347e3e62dabcbd9784691f test/results/test21-knight-posix-binary 3c7654eb26247e5f0460dad9e539220a68078cd8c56aae8457b5a97dc6eab892 test/results/test21-x86-binary -c813eb07c8b0d111b5be195341bead571f7a97341f63e08bfe07daeab40b28dc test/results/test22-knight-posix-binary +7ccc16255ce81a9b35934649b5446face10db899cadaf00008c582934eefaa37 test/results/test22-knight-posix-binary 3d0a08c9f38b995318f459884880dbcd309930fb9f51de05c83eb1fcc3fa1825 test/results/test22-x86-binary -6ff4275400660e7b14db53230da0be3e2106892af73cb5c99d39a18186dafe09 test/results/test23-knight-posix-binary +1b86c800067f64ffd6cfd4b39155b81e3b0fc7ffa6d43d1edd75852edd2d583f test/results/test23-knight-posix-binary 3060147b0d56e30c6d9a36ed4675feed306c398df365d2c1c9e2d1c88b40cf3e test/results/test23-x86-binary -7f5ef758eaafbc4b5364f7400332865c91c3224d60407cc4093eddfb09eddcb4 test/results/test24-knight-posix-binary +a1053415b79f08f8bcc9ebda8c9b096ed4e66c483504ba3d7d4dbebad2e3fabf test/results/test24-knight-posix-binary ff810940f7e8a9df916b20bc95d7d83a7165c57853e343417826a9f5a607c2db test/results/test24-x86-binary -6ae47d659b0eefa641e361d4e6c57c89c121ec0618a0d0817b35b6887aa24a1a test/results/test99-knight-posix-binary +bea554c06c8ecdb9eaae2c586a2006487968625b9570cbe305f69959c0e680e7 test/results/test99-knight-posix-binary 140af7fb3ef89d84b21bd3fe69f0d3260650ec0467c0ffadf9268fad573a397f test/results/test99-x86-binary diff --git a/test/test100/proof.answer b/test/test100/proof.answer index e5b5890..0a110d1 100644 --- a/test/test100/proof.answer +++ b/test/test100/proof.answer @@ -1 +1 @@ -8a1a2003dbe7e6f08b7501879d82212e19e0d8d54aecca9e744b627b2ebf079b test/test100/proof +6f141cc0c20068f7d88215201e3c8ae77eb547ecf84ee62f65586a55eac3b9f5 test/test100/proof