From 1011655d2ef76a0c0aa29dbbff091dab139198e3 Mon Sep 17 00:00:00 2001 From: Roland Reichwein Date: Sat, 24 Oct 2020 16:32:18 +0200 Subject: Add FlowGraph --- test-asm.cpp | 132 ----------------------------------------------------------- 1 file changed, 132 deletions(-) delete mode 100644 test-asm.cpp (limited to 'test-asm.cpp') diff --git a/test-asm.cpp b/test-asm.cpp deleted file mode 100644 index 2d3afa0..0000000 --- a/test-asm.cpp +++ /dev/null @@ -1,132 +0,0 @@ -#include "asm/chunk.h" -#include "asm/assembler.h" -#include "asm/segment.h" -#include "asm/intel64/all_ops.h" - -#include "minicc.h" - -#include - -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std::string_literals; -namespace fs = std::filesystem; - -class AsmTest: public ::testing::Test -{ -protected: - AsmTest() { - //debug = true; - } - ~AsmTest() { - } - void SetUp(){ - } - void TearDown(){ - } -}; - -TEST_F(AsmTest, Intel64_add) { - Segment segment; - Asm::Args args{{Asm::Args::Register32("eax"), Asm::Args::Immediate32(1)}}; - segment.push_back(makeOp("add", args)); - - ASSERT_EQ(segment.size(), 1); - ASSERT_EQ(segment.getCode(), std::vector({0x05, 0x01, 0x00, 0x00, 0x00})); -} - -TEST_F(AsmTest, Intel64_int_0) { - Segment segment; - Asm::Args args{{Asm::Args::Immediate8(0)}}; - segment.push_back(makeOp("int", args)); - - ASSERT_EQ(segment.size(), 1); - ASSERT_EQ(segment.getCode(), std::vector{0xCE}); -} - -TEST_F(AsmTest, Intel64_int_1) { - Segment segment; - Asm::Args args{{Asm::Args::Immediate8(1)}}; - segment.push_back(makeOp("int", args)); - - ASSERT_EQ(segment.size(), 1); - ASSERT_EQ(segment.getCode(), std::vector{0xF1}); -} - -TEST_F(AsmTest, Intel64_int_5) { - Segment segment; - Asm::Args args{{Asm::Args::Immediate8(5)}}; - segment.push_back(makeOp("int", args)); - - ASSERT_EQ(segment.size(), 1); - ASSERT_EQ(segment.getCode(), std::vector({0xCD, 0x05})); -} - -TEST_F(AsmTest, Intel64_nop) { - Segment segment; - segment.push_back(makeOp("nop")); - - ASSERT_EQ(segment.size(), 1); - ASSERT_EQ(segment.getCode(), std::vector{0x90}); -} - -TEST_F(AsmTest, Intel64_ret) { - Segment segment; - segment.push_back(makeOp("ret")); - - ASSERT_EQ(segment.size(), 1); - ASSERT_EQ(segment.getCode(), std::vector{0xC3}); -} - -TEST_F(AsmTest, Intel64_multiple) { - Segment segment; - - segment.push_back(makeOp("nop")); - Asm::Args args0{{Asm::Args::Immediate8(5)}}; - segment.push_back(makeOp("int", args0)); - segment.push_back(makeOp("ret")); - segment.push_back(makeLabel("data1")); - segment.push_back(makeOp("ret")); - Asm::Args args1{{Asm::Args::Label("data1")}}; - segment.push_back(makeOp("jmp", args1)); - segment.push_back(makeData({1, 2, 3})); - - segment.insertAddresses(); - - ASSERT_EQ(segment.size(), 7); - ASSERT_EQ(segment.getCode(), std::vector( - { - 0x90, // nop - 0xCD, 0x05, // int 5 - 0xC3, // ret - // data1: - 0xC3, // ret - 0xE9, 0xFF, 0xFF, 0xFF, 0xFF, // jmp data1 - 0x01, 0x02, 0x03 // data - })); - - segment.optimize(); - - ASSERT_EQ(segment.size(), 7); - ASSERT_EQ(segment.getCode(), std::vector( - { - 0x90, // nop - 0xCD, 0x05, // int 5 - 0xC3, // ret - // data1: - 0xC3, // ret - 0xEB, 0xFF, // jmp data1 - 0x01, 0x02, 0x03 // data - })); -} -- cgit v1.2.3