Skip to content

Commit

Permalink
v.0.8.4 Added naming convention for xref-from and xref-to (cross refe…
Browse files Browse the repository at this point in the history
…rences). See CHANGELOG for more details.
  • Loading branch information
Milo-D committed Mar 18, 2021
1 parent 80290cc commit e2b1a51
Show file tree
Hide file tree
Showing 10 changed files with 37 additions and 30 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,13 @@

- nothing to log

# v.0.8.4

- Worked on naming Convention of xrefs
- xref-from and xref-to are using the same structure (vmcu_xref_t)
- xref-from's will always be exposed as xfrom with a list counter n_xfrom
- xref-to's will always be exposed as xto with a list counter n_xto

# v.0.8.3 - 2021-03-18

- Naming Convention of enums (preventing future internal name clashes)
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -232,9 +232,9 @@ int main(const int argc, const char **argv) {
vmcu_label_t *lx = &report->label[i];
printf("0x%04x\tL%d\n\n", lx->addr, lx->id);

for(int32_t j = 0; j < lx->n_xref; j++) {
for(int32_t j = 0; j < lx->n_xfrom; j++) {

vmcu_xref_t *x = &lx->xref[j];
vmcu_xref_t *x = &lx->xfrom[j];

printf(" xref from 0x%04x ", x->p->addr);
printf("%s\n", x->p->mnem);
Expand Down Expand Up @@ -280,9 +280,9 @@ int main(const int argc, const char **argv) {
vmcu_sfr_t *sfr = &report->sfr[i];
printf("SFR ID: %d\n\n", sfr->id);

for(int32_t j = 0; j < sfr->n_xref; j++) {
for(int32_t j = 0; j < sfr->n_xfrom; j++) {

vmcu_xref_t *x = &sfr->xref[j];
vmcu_xref_t *x = &sfr->xfrom[j];

printf(" xref from 0x%04x ", x->p->addr);
printf("%s\n", x->p->mnem);
Expand Down Expand Up @@ -445,7 +445,7 @@ take a look at engine/*/arch/
# Static Analysis

- [x] Disassembler
- [x] Cross references (xref-from)
- [x] Cross references (xref-from, xref-to)
- [ ] analyzer flags

- [x] Decompose and classify instructions
Expand Down
4 changes: 2 additions & 2 deletions driver/labels/labels.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ int main(const int argc, const char **argv) {
vmcu_label_t *lx = &report->label[i];
printf("0x%04x\tL%d\n", lx->addr, lx->id);

for(int32_t j = 0; j < lx->n_xref; j++) {
for(int32_t j = 0; j < lx->n_xfrom; j++) {

vmcu_xref_t *x = &lx->xref[j];
vmcu_xref_t *x = &lx->xfrom[j];

printf(" xref from 0x%04x ", x->i->addr);
printf("(%s)\n", x->i->mnem);
Expand Down
4 changes: 2 additions & 2 deletions driver/sfr/sfr.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ int main(const int argc, const char **argv) {
vmcu_sfr_t *sfr = &report->sfr[i];
printf("SFR ID: %d\n", sfr->id);

for(int32_t j = 0; j < sfr->n_xref; j++) {
for(int32_t j = 0; j < sfr->n_xfrom; j++) {

vmcu_xref_t *x = &sfr->xref[j];
vmcu_xref_t *x = &sfr->xfrom[j];

printf(" xref from 0x%04x ", x->i->addr);
printf("(%s)\n", x->i->mnem);
Expand Down
4 changes: 2 additions & 2 deletions engine/include/analyzer/report/label.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ typedef struct vmcu_label {
uint16_t id;
uint16_t addr;

int32_t n_xref;
vmcu_xref_t *xref;
int32_t n_xfrom;
vmcu_xref_t *xfrom;

} vmcu_label_t;

Expand Down
4 changes: 2 additions & 2 deletions engine/include/analyzer/report/sfr.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ typedef struct vmcu_sfr {

VMCU_SFR id;

int32_t n_xref;
vmcu_xref_t *xref;
int32_t n_xfrom;
vmcu_xref_t *xfrom;

} vmcu_sfr_t;

Expand Down
8 changes: 4 additions & 4 deletions engine/include/libvmcu/libvmcu_analyzer.h
Original file line number Diff line number Diff line change
Expand Up @@ -371,8 +371,8 @@ typedef struct vmcu_sfr { ///< sfr (special function registe

VMCU_SFR id; ///< sfr id (for example id = VMCU_SFR_UCSR0A)

int32_t n_xref; ///< xref (from) count
vmcu_xref_t *xref; ///< xref (from) list
int32_t n_xfrom; ///< xref (from) count
vmcu_xref_t *xfrom; ///< xref (from) list

} vmcu_sfr_t;

Expand All @@ -381,8 +381,8 @@ typedef struct vmcu_label { ///< label structure
uint16_t id; ///< unique label identifier
uint16_t addr; ///< label address

int32_t n_xref; ///< xref (from) count
vmcu_xref_t *xref; ///< xref (from) list
int32_t n_xfrom; ///< xref (from) count
vmcu_xref_t *xfrom; ///< xref (from) list

} vmcu_label_t;

Expand Down
6 changes: 3 additions & 3 deletions engine/src/analyzer/modules/labels/label_analyzer.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,10 @@ int vmcu_analyze_labels(vmcu_report_t *report) {

lx->id = i;
lx->addr = field[i];
lx->n_xref = 0;
lx->n_xfrom = 0;

int32_t *size = &lx->n_xref;
lx->xref = get_xrefs(report, lx, size);
int32_t *size = &lx->n_xfrom;
lx->xfrom = get_xrefs(report, lx, size);
}

cleanup:
Expand Down
12 changes: 6 additions & 6 deletions engine/src/analyzer/modules/sfr/sfr_analyzer.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ int vmcu_analyze_sfr(vmcu_report_t *report, vmcu_model_t *mcu) {

vmcu_sfr_t *sfr = &report->sfr[i];

sfr->n_xref = sfr_map[sfr->id];
sfr->xref = get_xrefs(report, sfr, mcu);
sfr->n_xfrom = sfr_map[sfr->id];
sfr->xfrom = get_xrefs(report, sfr, mcu);
}

cleanup:
Expand Down Expand Up @@ -118,9 +118,9 @@ static vmcu_sfr_t* get_sfrs(const int32_t *sfr_map, int32_t size, vmcu_model_t *

sfrs[j++] = (vmcu_sfr_t) {

.id = i,
.n_xref = 0,
.xref = NULL
.id = i,
.n_xfrom = 0,
.xfrom = NULL
};
}

Expand All @@ -129,7 +129,7 @@ static vmcu_sfr_t* get_sfrs(const int32_t *sfr_map, int32_t size, vmcu_model_t *

static vmcu_xref_t* get_xrefs(vmcu_report_t *report, vmcu_sfr_t *sfr, vmcu_model_t *mcu) {

vmcu_xref_t *xrefs = malloc(sfr->n_xref * sizeof(vmcu_xref_t));
vmcu_xref_t *xrefs = malloc(sfr->n_xfrom * sizeof(vmcu_xref_t));

for(int32_t i = 0, j = 0; i < report->progsize; i++) {

Expand Down
8 changes: 4 additions & 4 deletions engine/src/analyzer/report/report.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,14 @@ void vmcu_report_dtor(vmcu_report_t *this) {

for(int32_t i = 0; i < this->n_sfr; i++) {

if(this->sfr[i].n_xref > 0)
free(this->sfr[i].xref);
if(this->sfr[i].n_xfrom > 0)
free(this->sfr[i].xfrom);
}

for(int32_t i = 0; i < this->n_label; i++) {

if(this->label[i].n_xref > 0)
free(this->label[i].xref);
if(this->label[i].n_xfrom > 0)
free(this->label[i].xfrom);
}

for(int32_t i = 0; i < this->n_vector; i++) {
Expand Down

0 comments on commit e2b1a51

Please sign in to comment.