diff options
author | Joakim Sindholt <opensource@zhasha.com> | 2010-04-08 00:20:33 +0200 |
---|---|---|
committer | Joakim Sindholt <opensource@zhasha.com> | 2010-04-08 00:20:33 +0200 |
commit | f805c5a120070286830c409676210049a40757f0 (patch) | |
tree | 2829a0c250394d18f281db814a9d96f934ac4c3c | |
parent | 6e9f52370133b6e39f6b2d4e7bad9584dbf43412 (diff) |
csview: use the new Packet functions
-rw-r--r-- | src/csview.c | 173 | ||||
-rw-r--r-- | src/csview.vala | 72 |
2 files changed, 94 insertions, 151 deletions
diff --git a/src/csview.c b/src/csview.c index 861e3e7..27a6709 100644 --- a/src/csview.c +++ b/src/csview.c @@ -374,18 +374,18 @@ guint8 emulation_bitfield_get_low (EmulationBitfield* self); static guint32 gui_cs_list_model_bitfield_value (GUICSListModel* self, guint32 addr, guint variant, guint bitfield, guint32 dword); GUICSListModelRowType gui_cs_list_model_cs_iter_get_row_type (GUICSListModelCSIter* self); guint32 emulation_packet_get_header (EmulationPacket* self); -static guint32 gui_cs_list_model_dword_addr (GUICSListModel* self, guint p, guint d); +guint32 emulation_packet_target_addr (EmulationPacket* self, guint index); +GType emulation_packet3_get_type (void); +const char* emulation_packet3_get_opcode_name (EmulationPacket3* self); guint32 emulation_packet_get (EmulationPacket* self, guint index); guint32 emulation_packet0_get__ADDR (EmulationPacket0* self); guint32 emulation_packet0_get__ONE_REG_WR (EmulationPacket0* self); guint32 emulation_packet0_get__COUNT (EmulationPacket0* self); guint32 emulation_packet1_get__ADDR1 (EmulationPacket1* self); guint32 emulation_packet1_get__ADDR2 (EmulationPacket1* self); -GType emulation_packet3_get_type (void); guint32 emulation_packet3_get__IT_OPCODE (EmulationPacket3* self); guint32 emulation_packet3_get__COUNT (EmulationPacket3* self); static void gui_cs_list_model_real_get_value (GtkTreeModel* base, GtkTreeIter* iter, gint column, GValue* val); -gboolean emulation_packet0_get_one_reg_wr (EmulationPacket0* self); static gboolean gui_cs_list_model_real_iter_next (GtkTreeModel* base, GtkTreeIter* iter); void gui_cs_list_model_cs_iter_copy (GUICSListModelCSIter* self, GUICSListModelCSIter* it); static gboolean gui_cs_list_model_real_iter_children (GtkTreeModel* base, GtkTreeIter* iter, GtkTreeIter* parent); @@ -756,21 +756,27 @@ static char* gui_cs_list_model_translate_addr (GUICSListModel* self, guint32 add char* _tmp0_; char* _tmp3_; g_return_val_if_fail (self != NULL, NULL); + if (addr == 0) { + result = g_strdup (""); + return result; + } regs = emulation_spec_translate_addr (self->priv->m_spec, (guint) addr); if (regs == NULL) { result = g_strdup_printf ("0x%04X", addr); _g_object_unref0 (regs); return result; - } - if (emulation_register_list_get_length (regs) > 1) { - result = g_strdup ("Multiple"); - _g_object_unref0 (regs); - return result; - } - if (emulation_register_info_get_count (emulation_register_get_info (emulation_register_list_get (regs, (guint) 0))) <= 1) { - result = g_strdup (emulation_register_info_get_name (emulation_register_get_info (emulation_register_list_get (regs, (guint) 0)))); - _g_object_unref0 (regs); - return result; + } else { + if (emulation_register_list_get_length (regs) > 1) { + result = g_strdup ("Multiple"); + _g_object_unref0 (regs); + return result; + } else { + if (emulation_register_info_get_count (emulation_register_get_info (emulation_register_list_get (regs, (guint) 0))) <= 1) { + result = g_strdup (emulation_register_info_get_name (emulation_register_get_info (emulation_register_list_get (regs, (guint) 0)))); + _g_object_unref0 (regs); + return result; + } + } } result = (_tmp3_ = g_strconcat (_tmp2_ = g_strconcat (_tmp0_ = g_strconcat (emulation_register_info_get_name (emulation_register_get_info (emulation_register_list_get (regs, (guint) 0))), "[", NULL), _tmp1_ = g_strdup_printf ("%u", emulation_register_get_num (emulation_register_list_get (regs, (guint) 0))), NULL), "]", NULL), _g_free0 (_tmp2_), _g_free0 (_tmp1_), _g_free0 (_tmp0_), _tmp3_); _g_object_unref0 (regs); @@ -866,7 +872,7 @@ static void gui_cs_list_model_real_get_value (GtkTreeModel* base, GtkTreeIter* i case 0: { char* _tmp1_; - g_value_set_string (val, _tmp1_ = gui_cs_list_model_translate_addr (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (it), (guint) 1))); + g_value_set_string (val, _tmp1_ = gui_cs_list_model_translate_addr (self, emulation_packet_target_addr (p, (guint) 0))); _g_free0 (_tmp1_); break; } @@ -876,7 +882,7 @@ static void gui_cs_list_model_real_get_value (GtkTreeModel* base, GtkTreeIter* i char* _tmp4_; char* _tmp3_; char* _tmp2_; - g_value_set_string (val, _tmp5_ = g_strconcat (_tmp3_ = g_strconcat (_tmp2_ = gui_cs_list_model_translate_addr (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (it), (guint) 1)), " | ", NULL), _tmp4_ = gui_cs_list_model_translate_addr (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (it), (guint) 2)), NULL)); + g_value_set_string (val, _tmp5_ = g_strconcat (_tmp3_ = g_strconcat (_tmp2_ = gui_cs_list_model_translate_addr (self, emulation_packet_target_addr (p, (guint) 0)), " | ", NULL), _tmp4_ = gui_cs_list_model_translate_addr (self, emulation_packet_target_addr (p, (guint) 1)), NULL)); _g_free0 (_tmp5_); _g_free0 (_tmp4_); _g_free0 (_tmp3_); @@ -890,7 +896,8 @@ static void gui_cs_list_model_real_get_value (GtkTreeModel* base, GtkTreeIter* i } case 3: { - g_value_set_static_string (val, "TODO"); + EmulationPacket* _tmp6_; + g_value_set_string (val, emulation_packet3_get_opcode_name ((_tmp6_ = p, EMULATION_IS_PACKET3 (_tmp6_) ? ((EmulationPacket3*) _tmp6_) : NULL))); break; } } @@ -904,46 +911,23 @@ static void gui_cs_list_model_real_get_value (GtkTreeModel* base, GtkTreeIter* i switch (column) { case GUI_CS_LIST_MODEL_COLUMNS_NAME: { - char* _tmp6_; - g_value_set_string (val, _tmp6_ = g_strdup_printf ("DWORD%u", gui_cs_list_model_cs_iter_get_dword (it) - 1)); - _g_free0 (_tmp6_); + char* _tmp7_; + g_value_set_string (val, _tmp7_ = g_strdup_printf ("DWORD%u", gui_cs_list_model_cs_iter_get_dword (it) - 1)); + _g_free0 (_tmp7_); break; } case GUI_CS_LIST_MODEL_COLUMNS_VALUE: { - char* _tmp7_; - g_value_set_string (val, _tmp7_ = g_strdup_printf ("0x%08X", emulation_packet_get (p, (guint) (gui_cs_list_model_cs_iter_get_dword (it) - 1)))); - _g_free0 (_tmp7_); + char* _tmp8_; + g_value_set_string (val, _tmp8_ = g_strdup_printf ("0x%08X", emulation_packet_get (p, (guint) (gui_cs_list_model_cs_iter_get_dword (it) - 1)))); + _g_free0 (_tmp8_); break; } case GUI_CS_LIST_MODEL_COLUMNS_TARGET: { - switch (emulation_packet_get_type_id (p)) { - case 0: - { - char* _tmp8_; - g_value_set_string (val, _tmp8_ = gui_cs_list_model_translate_addr (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (it), (guint) gui_cs_list_model_cs_iter_get_dword (it)))); - _g_free0 (_tmp8_); - break; - } - case 1: - { - char* _tmp9_; - g_value_set_string (val, _tmp9_ = gui_cs_list_model_translate_addr (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (it), (guint) gui_cs_list_model_cs_iter_get_dword (it)))); - _g_free0 (_tmp9_); - break; - } - case 2: - { - g_value_set_static_string (val, ""); - break; - } - case 3: - { - g_value_set_static_string (val, "TODO"); - break; - } - } + char* _tmp9_; + g_value_set_string (val, _tmp9_ = gui_cs_list_model_translate_addr (self, emulation_packet_target_addr (p, (guint) (gui_cs_list_model_cs_iter_get_dword (it) - 1)))); + _g_free0 (_tmp9_); break; } } @@ -977,7 +961,7 @@ static void gui_cs_list_model_real_get_value (GtkTreeModel* base, GtkTreeIter* i switch (column) { case GUI_CS_LIST_MODEL_COLUMNS_NAME: { - g_value_set_static_string (val, gui_cs_list_model_variant_name (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (it), (guint) gui_cs_list_model_cs_iter_get_dword (it)), (guint) gui_cs_list_model_cs_iter_get_variant (it))); + g_value_set_static_string (val, gui_cs_list_model_variant_name (self, emulation_packet_target_addr (p, (guint) (gui_cs_list_model_cs_iter_get_dword (it) - 1)), (guint) gui_cs_list_model_cs_iter_get_variant (it))); break; } case GUI_CS_LIST_MODEL_COLUMNS_VALUE: @@ -998,13 +982,13 @@ static void gui_cs_list_model_real_get_value (GtkTreeModel* base, GtkTreeIter* i switch (column) { case GUI_CS_LIST_MODEL_COLUMNS_NAME: { - g_value_set_static_string (val, gui_cs_list_model_bitfield_name (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (it), (guint) gui_cs_list_model_cs_iter_get_dword (it)), (guint) gui_cs_list_model_cs_iter_get_variant (it), (guint) gui_cs_list_model_cs_iter_get_bitfield (it))); + g_value_set_static_string (val, gui_cs_list_model_bitfield_name (self, emulation_packet_target_addr (p, (guint) (gui_cs_list_model_cs_iter_get_dword (it) - 1)), (guint) gui_cs_list_model_cs_iter_get_variant (it), (guint) gui_cs_list_model_cs_iter_get_bitfield (it))); break; } case GUI_CS_LIST_MODEL_COLUMNS_VALUE: { char* _tmp11_; - g_value_set_string (val, _tmp11_ = g_strdup_printf ("%u", gui_cs_list_model_bitfield_value (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (it), (guint) gui_cs_list_model_cs_iter_get_dword (it)), (guint) gui_cs_list_model_cs_iter_get_variant (it), (guint) gui_cs_list_model_cs_iter_get_bitfield (it), emulation_packet_get (p, (guint) (gui_cs_list_model_cs_iter_get_dword (it) - 1))))); + g_value_set_string (val, _tmp11_ = g_strdup_printf ("%u", gui_cs_list_model_bitfield_value (self, emulation_packet_target_addr (p, (guint) (gui_cs_list_model_cs_iter_get_dword (it) - 1)), (guint) gui_cs_list_model_cs_iter_get_variant (it), (guint) gui_cs_list_model_cs_iter_get_bitfield (it), emulation_packet_get (p, (guint) (gui_cs_list_model_cs_iter_get_dword (it) - 1))))); _g_free0 (_tmp11_); break; } @@ -1041,7 +1025,7 @@ static void gui_cs_list_model_real_get_value (GtkTreeModel* base, GtkTreeIter* i case 0: { char* _tmp13_; - g_value_set_string (val, _tmp13_ = gui_cs_list_model_translate_addr (self, emulation_packet0_get__ADDR (p0))); + g_value_set_string (val, _tmp13_ = g_strdup_printf ("%04X", emulation_packet0_get__ADDR (p0))); _g_free0 (_tmp13_); break; } @@ -1079,14 +1063,14 @@ static void gui_cs_list_model_real_get_value (GtkTreeModel* base, GtkTreeIter* i case 0: { char* _tmp18_; - g_value_set_string (val, _tmp18_ = gui_cs_list_model_translate_addr (self, emulation_packet1_get__ADDR1 (p1))); + g_value_set_string (val, _tmp18_ = g_strdup_printf ("%04X", emulation_packet1_get__ADDR1 (p1))); _g_free0 (_tmp18_); break; } case 1: { char* _tmp19_; - g_value_set_string (val, _tmp19_ = gui_cs_list_model_translate_addr (self, emulation_packet1_get__ADDR2 (p1))); + g_value_set_string (val, _tmp19_ = g_strdup_printf ("%04X", emulation_packet1_get__ADDR2 (p1))); _g_free0 (_tmp19_); break; } @@ -1157,49 +1141,6 @@ static void gui_cs_list_model_real_get_value (GtkTreeModel* base, GtkTreeIter* i } -static guint32 gui_cs_list_model_dword_addr (GUICSListModel* self, guint p, guint d) { - guint32 result; - EmulationPacket* _tmp0_; - guint _tmp1_; - g_return_val_if_fail (self != NULL, 0U); - g_assert (p < emulation_cs_get_length (self->priv->m_cs)); - switch ((_tmp1_ = emulation_packet_get_type_id (_tmp0_ = emulation_cs_get (self->priv->m_cs, p)), _g_object_unref0 (_tmp0_), _tmp1_)) { - case 0: - { - EmulationPacket* _tmp2_; - EmulationPacket0* p0; - guint _tmp3_ = 0U; - p0 = (_tmp2_ = emulation_cs_get (self->priv->m_cs, p), EMULATION_IS_PACKET0 (_tmp2_) ? ((EmulationPacket0*) _tmp2_) : NULL); - if (emulation_packet0_get_one_reg_wr (p0)) { - _tmp3_ = (guint) 0; - } else { - _tmp3_ = 4 * (d - 1); - } - result = emulation_packet0_get_addr (p0) + _tmp3_; - _g_object_unref0 (p0); - return result; - } - case 1: - { - EmulationPacket* _tmp4_; - EmulationPacket1* p1; - guint32 _tmp5_ = 0U; - p1 = (_tmp4_ = emulation_cs_get (self->priv->m_cs, p), EMULATION_IS_PACKET1 (_tmp4_) ? ((EmulationPacket1*) _tmp4_) : NULL); - if (d == 1) { - _tmp5_ = emulation_packet1_get_addr1 (p1); - } else { - _tmp5_ = emulation_packet1_get_addr2 (p1); - } - result = _tmp5_; - _g_object_unref0 (p1); - return result; - } - } - result = (guint32) 0; - return result; -} - - static gboolean gui_cs_list_model_real_iter_next (GtkTreeModel* base, GtkTreeIter* iter) { GUICSListModel * self; gboolean result; @@ -1243,8 +1184,10 @@ static gboolean gui_cs_list_model_real_iter_next (GtkTreeModel* base, GtkTreeIte case GUI_CS_LIST_MODEL_ROW_TYPE_VARIANT: { guint32 v; + EmulationPacket* _tmp2_; + gboolean _tmp3_; v = gui_cs_list_model_cs_iter_get_variant (it) + 1; - if (v >= gui_cs_list_model_get_variant_count (self, gui_cs_list_model_dword_addr (self, (guint) p, (guint) gui_cs_list_model_cs_iter_get_dword (it)))) { + if ((_tmp3_ = v >= gui_cs_list_model_get_variant_count (self, emulation_packet_target_addr (_tmp2_ = emulation_cs_get (self->priv->m_cs, (guint) p), (guint) (gui_cs_list_model_cs_iter_get_dword (it) - 1))), _g_object_unref0 (_tmp2_), _tmp3_)) { result = FALSE; _gui_cs_list_model_cs_iter_unref0 (it); return result; @@ -1255,8 +1198,10 @@ static gboolean gui_cs_list_model_real_iter_next (GtkTreeModel* base, GtkTreeIte case GUI_CS_LIST_MODEL_ROW_TYPE_BITFIELD: { guint32 b; + EmulationPacket* _tmp4_; + gboolean _tmp5_; b = gui_cs_list_model_cs_iter_get_bitfield (it) + 1; - if (b >= gui_cs_list_model_get_bitfield_count (self, gui_cs_list_model_dword_addr (self, (guint) p, (guint) gui_cs_list_model_cs_iter_get_dword (it)), (guint) gui_cs_list_model_cs_iter_get_variant (it))) { + if ((_tmp5_ = b >= gui_cs_list_model_get_bitfield_count (self, emulation_packet_target_addr (_tmp4_ = emulation_cs_get (self->priv->m_cs, (guint) p), (guint) (gui_cs_list_model_cs_iter_get_dword (it) - 1)), (guint) gui_cs_list_model_cs_iter_get_variant (it)), _g_object_unref0 (_tmp4_), _tmp5_)) { result = FALSE; _gui_cs_list_model_cs_iter_unref0 (it); return result; @@ -1267,10 +1212,10 @@ static gboolean gui_cs_list_model_real_iter_next (GtkTreeModel* base, GtkTreeIte case GUI_CS_LIST_MODEL_ROW_TYPE_HEADER_BITFIELD: { guint32 b; - EmulationPacket* _tmp2_; - gboolean _tmp3_; + EmulationPacket* _tmp6_; + gboolean _tmp7_; b = gui_cs_list_model_cs_iter_get_bitfield (it) + 1; - if ((_tmp3_ = b >= gui_cs_list_model_packet_headers_length[emulation_packet_get_type_id (_tmp2_ = emulation_cs_get (self->priv->m_cs, (guint) p))], _g_object_unref0 (_tmp2_), _tmp3_)) { + if ((_tmp7_ = b >= gui_cs_list_model_packet_headers_length[emulation_packet_get_type_id (_tmp6_ = emulation_cs_get (self->priv->m_cs, (guint) p))], _g_object_unref0 (_tmp6_), _tmp7_)) { result = FALSE; _gui_cs_list_model_cs_iter_unref0 (it); return result; @@ -1329,7 +1274,9 @@ static gboolean gui_cs_list_model_real_iter_children (GtkTreeModel* base, GtkTre } case GUI_CS_LIST_MODEL_ROW_TYPE_DWORD: { - if (gui_cs_list_model_get_variant_count (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (pa), (guint) gui_cs_list_model_cs_iter_get_dword (pa))) == 0) { + EmulationPacket* _tmp0_; + gboolean _tmp1_; + if ((_tmp1_ = gui_cs_list_model_get_variant_count (self, emulation_packet_target_addr (_tmp0_ = emulation_cs_get (self->priv->m_cs, (guint) gui_cs_list_model_cs_iter_get_packet (pa)), (guint) (gui_cs_list_model_cs_iter_get_dword (pa) - 1))) == 0, _g_object_unref0 (_tmp0_), _tmp1_)) { result = FALSE; _gui_cs_list_model_cs_iter_unref0 (it); _gui_cs_list_model_cs_iter_unref0 (pa); @@ -1381,7 +1328,9 @@ static gboolean gui_cs_list_model_real_iter_has_child (GtkTreeModel* base, GtkTr case GUI_CS_LIST_MODEL_ROW_TYPE_DWORD: { gboolean _tmp0_ = FALSE; - if (gui_cs_list_model_get_variant_count (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (it), (guint) gui_cs_list_model_cs_iter_get_dword (it))) == 0) { + EmulationPacket* _tmp1_; + gboolean _tmp2_; + if ((_tmp2_ = gui_cs_list_model_get_variant_count (self, emulation_packet_target_addr (_tmp1_ = emulation_cs_get (self->priv->m_cs, (guint) gui_cs_list_model_cs_iter_get_packet (it)), (guint) (gui_cs_list_model_cs_iter_get_dword (it) - 1))) == 0, _g_object_unref0 (_tmp1_), _tmp2_)) { _tmp0_ = FALSE; } else { _tmp0_ = TRUE; @@ -1448,13 +1397,17 @@ static gint gui_cs_list_model_real_iter_n_children (GtkTreeModel* base, GtkTreeI } case GUI_CS_LIST_MODEL_ROW_TYPE_DWORD: { - result = (gint) gui_cs_list_model_get_variant_count (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (it), (guint) gui_cs_list_model_cs_iter_get_dword (it))); + EmulationPacket* _tmp4_; + gint _tmp5_; + result = (_tmp5_ = (gint) gui_cs_list_model_get_variant_count (self, emulation_packet_target_addr (_tmp4_ = emulation_cs_get (self->priv->m_cs, (guint) gui_cs_list_model_cs_iter_get_packet (it)), (guint) (gui_cs_list_model_cs_iter_get_dword (it) - 1))), _g_object_unref0 (_tmp4_), _tmp5_); _gui_cs_list_model_cs_iter_unref0 (it); return result; } case GUI_CS_LIST_MODEL_ROW_TYPE_VARIANT: { - result = (gint) gui_cs_list_model_get_bitfield_count (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (it), (guint) gui_cs_list_model_cs_iter_get_dword (it)), (guint) gui_cs_list_model_cs_iter_get_variant (it)); + EmulationPacket* _tmp6_; + gint _tmp7_; + result = (_tmp7_ = (gint) gui_cs_list_model_get_bitfield_count (self, emulation_packet_target_addr (_tmp6_ = emulation_cs_get (self->priv->m_cs, (guint) gui_cs_list_model_cs_iter_get_packet (it)), (guint) (gui_cs_list_model_cs_iter_get_dword (it) - 1)), (guint) gui_cs_list_model_cs_iter_get_variant (it)), _g_object_unref0 (_tmp6_), _tmp7_); _gui_cs_list_model_cs_iter_unref0 (it); return result; } @@ -1547,7 +1500,9 @@ static gboolean gui_cs_list_model_real_iter_nth_child (GtkTreeModel* base, GtkTr } case GUI_CS_LIST_MODEL_ROW_TYPE_DWORD: { - if (n >= gui_cs_list_model_get_variant_count (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (pa), (guint) gui_cs_list_model_cs_iter_get_dword (pa)))) { + EmulationPacket* _tmp5_; + gboolean _tmp6_; + if ((_tmp6_ = n >= gui_cs_list_model_get_variant_count (self, emulation_packet_target_addr (_tmp5_ = emulation_cs_get (self->priv->m_cs, (guint) gui_cs_list_model_cs_iter_get_packet (pa)), (guint) (gui_cs_list_model_cs_iter_get_dword (pa) - 1))), _g_object_unref0 (_tmp5_), _tmp6_)) { result = FALSE; _gui_cs_list_model_cs_iter_unref0 (it); _gui_cs_list_model_cs_iter_unref0 (pa); @@ -1559,7 +1514,9 @@ static gboolean gui_cs_list_model_real_iter_nth_child (GtkTreeModel* base, GtkTr } case GUI_CS_LIST_MODEL_ROW_TYPE_VARIANT: { - if (n >= gui_cs_list_model_get_bitfield_count (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (pa), (guint) gui_cs_list_model_cs_iter_get_dword (pa)), (guint) gui_cs_list_model_cs_iter_get_variant (pa))) { + EmulationPacket* _tmp7_; + gboolean _tmp8_; + if ((_tmp8_ = n >= gui_cs_list_model_get_bitfield_count (self, emulation_packet_target_addr (_tmp7_ = emulation_cs_get (self->priv->m_cs, (guint) gui_cs_list_model_cs_iter_get_packet (pa)), (guint) (gui_cs_list_model_cs_iter_get_dword (pa) - 1)), (guint) gui_cs_list_model_cs_iter_get_variant (pa)), _g_object_unref0 (_tmp7_), _tmp8_)) { result = FALSE; _gui_cs_list_model_cs_iter_unref0 (it); _gui_cs_list_model_cs_iter_unref0 (pa); diff --git a/src/csview.vala b/src/csview.vala index d474460..5bed51d 100644 --- a/src/csview.vala +++ b/src/csview.vala @@ -329,10 +329,17 @@ namespace GUI private string translate_addr(uint32 addr) { + if (addr == 0) { return ""; } + var regs = m_spec.translate_addr((uint)addr); - if (regs == null) { return addr.to_string("0x%04X"); } - if (regs.length > 1) { return "Multiple"; } - if (regs[0].info.count <= 1) { return regs[0].info.name; } + if (regs == null) { + return addr.to_string("0x%04X"); + } else if (regs.length > 1) { + return "Multiple"; + } else if (regs[0].info.count <= 1) { + return regs[0].info.name; + } + return regs[0].info.name + "[" + regs[0].num.to_string() + "]"; } @@ -384,10 +391,10 @@ namespace GUI case Columns.VALUE: val.set_string(p.header.to_string("0x%08X")); break; case Columns.TARGET: switch (p.type_id) { - case 0: val.set_string(translate_addr(dword_addr(it.packet, 1))); break; - case 1: val.set_string(translate_addr(dword_addr(it.packet, 1)) + " | " + translate_addr(dword_addr(it.packet, 2))); break; + case 0: val.set_string(translate_addr(p.target_addr(0))); break; + case 1: val.set_string(translate_addr(p.target_addr(0)) + " | " + translate_addr(p.target_addr(1))); break; case 2: val.set_static_string(""); break; - case 3: val.set_static_string("TODO"); break; + case 3: val.set_string((p as Packet3).opcode_name); break; } break; } @@ -397,14 +404,7 @@ namespace GUI switch (column) { case Columns.NAME: val.set_string((it.dword-1).to_string("DWORD%u")); break; case Columns.VALUE: val.set_string(p[it.dword-1].to_string("0x%08X")); break; - case Columns.TARGET: - switch (p.type_id) { - case 0: val.set_string(translate_addr(dword_addr(it.packet, it.dword))); break; - case 1: val.set_string(translate_addr(dword_addr(it.packet, it.dword))); break; - case 2: val.set_static_string(""); break; - case 3: val.set_static_string("TODO"); break; - } - break; + case Columns.TARGET: val.set_string(translate_addr(p.target_addr(it.dword-1))); break; } break; @@ -418,7 +418,7 @@ namespace GUI case RowType.VARIANT: switch (column) { - case Columns.NAME: val.set_static_string(variant_name(dword_addr(it.packet, it.dword), it.variant)); break; + case Columns.NAME: val.set_static_string(variant_name(p.target_addr(it.dword-1), it.variant)); break; case Columns.VALUE: val.set_static_string(""); break; case Columns.TARGET: val.set_static_string(""); break; } @@ -426,8 +426,8 @@ namespace GUI case RowType.BITFIELD: switch (column) { - case Columns.NAME: val.set_static_string(bitfield_name(dword_addr(it.packet, it.dword), it.variant, it.bitfield)); break; - case Columns.VALUE: val.set_string(bitfield_value(dword_addr(it.packet, it.dword), it.variant, it.bitfield, p[it.dword-1]).to_string()); break; + case Columns.NAME: val.set_static_string(bitfield_name(p.target_addr(it.dword-1), it.variant, it.bitfield)); break; + case Columns.VALUE: val.set_string(bitfield_value(p.target_addr(it.dword-1), it.variant, it.bitfield, p[it.dword-1]).to_string()); break; case Columns.TARGET: val.set_static_string(""); break; } break; @@ -441,7 +441,7 @@ namespace GUI case 0: Packet0 p0 = p as Packet0; switch (it.bitfield) { - case 0: val.set_string(translate_addr(p0._ADDR)); break; + case 0: val.set_string(p0._ADDR.to_string("%04X")); break; case 1: val.set_string(p0._ONE_REG_WR.to_string()); break; case 2: val.set_string(p0._COUNT.to_string()); break; case 3: val.set_string(p.type_id.to_string()); break; @@ -450,8 +450,8 @@ namespace GUI case 1: Packet1 p1 = p as Packet1; switch (it.bitfield) { - case 0: val.set_string(translate_addr(p1._ADDR1)); break; - case 1: val.set_string(translate_addr(p1._ADDR2)); break; + case 0: val.set_string(p1._ADDR1.to_string("%04X")); break; + case 1: val.set_string(p1._ADDR2.to_string("%04X")); break; case 2: val.set_string(p.type_id.to_string()); break; } break; @@ -463,7 +463,7 @@ namespace GUI case 3: Packet3 p3 = p as Packet3; switch (it.bitfield) { - case 0: val.set_string(p3._IT_OPCODE.to_string("0x%02X")); break; /* TODO: resolve opcode */ + case 0: val.set_string(p3._IT_OPCODE.to_string("0x%02X")); break; case 1: val.set_string(p3._COUNT.to_string()); break; case 2: val.set_string(p.type_id.to_string()); break; } @@ -475,20 +475,6 @@ namespace GUI } } - private uint32 dword_addr(uint p, uint d) - { - assert(p < m_cs.length); - switch (m_cs[p].type_id) { - case 0: - Packet0 p0 = m_cs[p] as Packet0; - return p0.addr + ((p0.one_reg_wr) ? 0 : 4*(d-1)); - case 1: - Packet1 p1 = m_cs[p] as Packet1; - return (d == 1) ? p1.addr1 : p1.addr2; - } - return 0; - } - public bool iter_next(ref TreeIter iter) { if (iter.stamp != m_stamp) { return false; } @@ -512,13 +498,13 @@ namespace GUI case RowType.VARIANT: var v = it.variant+1; - if (v >= get_variant_count(dword_addr(p, it.dword))) { return false; } + if (v >= get_variant_count(m_cs[p].target_addr(it.dword-1))) { return false; } it.variant = v; break; case RowType.BITFIELD: var b = it.bitfield+1; - if (b >= get_bitfield_count(dword_addr(p, it.dword), it.variant)) { return false; } + if (b >= get_bitfield_count(m_cs[p].target_addr(it.dword-1), it.variant)) { return false; } it.bitfield = b; break; @@ -563,7 +549,7 @@ namespace GUI break; case RowType.DWORD: - if (get_variant_count(dword_addr(pa.packet, pa.dword)) == 0) { return false; } + if (get_variant_count(m_cs[pa.packet].target_addr(pa.dword-1)) == 0) { return false; } it.variant = 0; it.in_variants = true; break; @@ -585,7 +571,7 @@ namespace GUI switch (it.row_type) { case RowType.PACKET: return true; case RowType.HEADER: return true; - case RowType.DWORD: return (get_variant_count(dword_addr(it.packet, it.dword)) == 0) ? false : true; + case RowType.DWORD: return (get_variant_count(m_cs[it.packet].target_addr(it.dword-1)) == 0) ? false : true; case RowType.VARIANT: return true; case RowType.BITFIELD: return false; case RowType.HEADER_BITFIELD: return false; @@ -603,8 +589,8 @@ namespace GUI switch (it.row_type) { case RowType.PACKET: return (int)m_cs[it.packet].length+1; case RowType.HEADER: return (int)packet_headers_length[m_cs[it.packet].type_id]; - case RowType.DWORD: return (int)get_variant_count(dword_addr(it.packet, it.dword)); - case RowType.VARIANT: return (int)get_bitfield_count(dword_addr(it.packet, it.dword), it.variant); + case RowType.DWORD: return (int)get_variant_count(m_cs[it.packet].target_addr(it.dword-1)); + case RowType.VARIANT: return (int)get_bitfield_count(m_cs[it.packet].target_addr(it.dword-1), it.variant); case RowType.BITFIELD: return 0; case RowType.HEADER_BITFIELD: return 0; } @@ -645,13 +631,13 @@ namespace GUI break; case RowType.DWORD: - if (n >= get_variant_count(dword_addr(pa.packet, pa.dword))) { return false; } + if (n >= get_variant_count(m_cs[pa.packet].target_addr(pa.dword-1))) { return false; } it.in_variants = true; it.variant = n; break; case RowType.VARIANT: - if (n >= get_bitfield_count(dword_addr(pa.packet, pa.dword), pa.variant)) { return false; } + if (n >= get_bitfield_count(m_cs[pa.packet].target_addr(pa.dword-1), pa.variant)) { return false; } it.in_bitfields = true; it.bitfield = n; break; |