summaryrefslogtreecommitdiffhomepage
path: root/test-asm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test-asm.cpp')
-rw-r--r--test-asm.cpp22
1 files changed, 18 insertions, 4 deletions
diff --git a/test-asm.cpp b/test-asm.cpp
index 256902c..efdeab9 100644
--- a/test-asm.cpp
+++ b/test-asm.cpp
@@ -93,12 +93,26 @@ TEST_F(AsmTest, Intel64_multiple) {
Segment segment;
segment.push_back(makeOp("nop"));
- AsmArgs args{{AsmArgs::Immediate8(5)}};
- segment.push_back(makeOp("int", args));
+ AsmArgs args0{{AsmArgs::Immediate8(5)}};
+ segment.push_back(makeOp("int", args0));
segment.push_back(makeOp("ret"));
segment.push_back(makeLabel("data1"));
+ segment.push_back(makeOp("ret"));
+ AsmArgs args1{{AsmArgs::Label("data1")}};
+ segment.push_back(makeOp("jmp", args1));
segment.push_back(makeData({1, 2, 3}));
- ASSERT_EQ(segment.size(), 5);
- ASSERT_EQ(segment.getCode(), std::vector<uint8_t>({0x90, 0xCD, 0x05, 0xC3, 0x01, 0x02, 0x03}));
+ segment.insertAddresses();
+
+ ASSERT_EQ(segment.size(), 7);
+ ASSERT_EQ(segment.getCode(), std::vector<uint8_t>(
+ {
+ 0x90, // nop
+ 0xCD, 0x05, // int 5
+ 0xC3, // ret
+ // data1:
+ 0xC3, // ret
+ 0xE9, 0xFF, 0xFF, 0xFF, 0xFF, // jmp data1
+ 0x01, 0x02, 0x03 // data
+ }));
}