summaryrefslogtreecommitdiffstats
path: root/riscv/picorv32/scripts/cxxdemo/firmware.cc
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2022-11-24 22:27:15 +0000
committerYann Herklotz <git@yannherklotz.com>2022-11-24 22:27:15 +0000
commitcfe60025ab06c73c44ce6b962a258668b3a90431 (patch)
tree292d7b2b01a6e0f2ee31b9d133312723980235c1 /riscv/picorv32/scripts/cxxdemo/firmware.cc
parentc0056cea555efe0d6775e3b28ffa5a4a91293097 (diff)
downloadbutterstick-cfe60025ab06c73c44ce6b962a258668b3a90431.tar.gz
butterstick-cfe60025ab06c73c44ce6b962a258668b3a90431.zip
Move all files
Diffstat (limited to 'riscv/picorv32/scripts/cxxdemo/firmware.cc')
-rw-r--r--riscv/picorv32/scripts/cxxdemo/firmware.cc87
1 files changed, 87 insertions, 0 deletions
diff --git a/riscv/picorv32/scripts/cxxdemo/firmware.cc b/riscv/picorv32/scripts/cxxdemo/firmware.cc
new file mode 100644
index 0000000..638c0dd
--- /dev/null
+++ b/riscv/picorv32/scripts/cxxdemo/firmware.cc
@@ -0,0 +1,87 @@
+#include <stdio.h>
+#include <iostream>
+#include <vector>
+#include <algorithm>
+
+class ExampleBaseClass
+{
+public:
+ ExampleBaseClass() {
+ std::cout << "ExampleBaseClass()" << std::endl;
+ }
+
+ virtual ~ExampleBaseClass() {
+ std::cout << "~ExampleBaseClass()" << std::endl;
+ }
+
+ virtual void print_something_virt() {
+ std::cout << "ExampleBaseClass::print_something_virt()" << std::endl;
+ }
+
+ void print_something_novirt() {
+ std::cout << "ExampleBaseClass::print_something_novirt()" << std::endl;
+ }
+};
+
+class ExampleSubClass : public ExampleBaseClass
+{
+public:
+ ExampleSubClass() {
+ std::cout << "ExampleSubClass()" << std::endl;
+ }
+
+ virtual ~ExampleSubClass() {
+ std::cout << "~ExampleSubClass()" << std::endl;
+ }
+
+ virtual void print_something_virt() {
+ std::cout << "ExampleSubClass::print_something_virt()" << std::endl;
+ }
+
+ void print_something_novirt() {
+ std::cout << "ExampleSubClass::print_something_novirt()" << std::endl;
+ }
+};
+
+int main()
+{
+ printf("Hello World, C!\n");
+
+ std::cout << "Hello World, C++!" << std::endl;
+
+ ExampleBaseClass *obj = new ExampleBaseClass;
+ obj->print_something_virt();
+ obj->print_something_novirt();
+ delete obj;
+
+ obj = new ExampleSubClass;
+ obj->print_something_virt();
+ obj->print_something_novirt();
+ delete obj;
+
+ std::vector<unsigned int> some_ints;
+ some_ints.push_back(0x48c9b3e4);
+ some_ints.push_back(0x79109b6a);
+ some_ints.push_back(0x16155039);
+ some_ints.push_back(0xa3635c9a);
+ some_ints.push_back(0x8d2f4702);
+ some_ints.push_back(0x38d232ae);
+ some_ints.push_back(0x93924a17);
+ some_ints.push_back(0x62b895cc);
+ some_ints.push_back(0x6130d459);
+ some_ints.push_back(0x837c8b44);
+ some_ints.push_back(0x3d59b4fe);
+ some_ints.push_back(0x444914d8);
+ some_ints.push_back(0x3a3dc660);
+ some_ints.push_back(0xe5a121ef);
+ some_ints.push_back(0xff00866d);
+ some_ints.push_back(0xb843b879);
+
+ std::sort(some_ints.begin(), some_ints.end());
+
+ for (auto n : some_ints)
+ std::cout << std::hex << n << std::endl;
+
+ std::cout << "All done." << std::endl;
+ return 0;
+}