diff --git a/irdb-libs/libIRDB-core/src/operand_csx86.cpp b/irdb-libs/libIRDB-core/src/operand_csx86.cpp
index 6b7fa57a2351e13eac1970f5e797928c8d0820f7..84e1eadb5439154c2dc4a59d30ad237928f6e5ce 100644
--- a/irdb-libs/libIRDB-core/src/operand_csx86.cpp
+++ b/irdb-libs/libIRDB-core/src/operand_csx86.cpp
@@ -247,17 +247,22 @@ string DecodedOperandCapstoneX86_t::getString() const
 			else
 			{
 				string ret_val;
+				const auto doPlus = [&]() -> string 
+				{
+					return ret_val == "" ? "" : " + ";
+				};
+
 				if (op.mem.base != X86_REG_INVALID)
 					ret_val+=cs_reg_name(handle, op.mem.base);
 
 				if (op.mem.index != X86_REG_INVALID)
-					ret_val+=string(" + ") +cs_reg_name(handle, op.mem.index);
+					ret_val+=doPlus() +cs_reg_name(handle, op.mem.index);
 
 				if (op.mem.scale != 1)
-					ret_val+=string(" * ") + to_string(op.mem.scale);
+					ret_val+=doPlus() + to_string(op.mem.scale);
 
 				if (op.mem.disp != 0)
-					ret_val+=" + 0x"+ IRDB_SDK::to_hex_string(op.mem.disp);
+					ret_val+=doPlus() + " 0x"+ IRDB_SDK::to_hex_string(op.mem.disp);
 
 				if(ret_val=="")
 					return "0";