Skip to content

Commit 8898fca

Browse files
committed
Cambio de calculateDataBytesOccupied pasandole 2 parámetros (static y dynamic data) y reasignación de la llamada a la función. Cmento en stepback y microstepback la actualización de window.dataBytes.
1 parent 2b0953d commit 8898fca

1 file changed

Lines changed: 30 additions & 27 deletions

File tree

src/marie.ts

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -455,10 +455,10 @@ export class MarieSim {
455455
this._log[this._log.length - 1].type !== 'step'
456456
);
457457

458-
// Recalcular datos totales después de retroceder
459-
if (typeof window !== 'undefined') {
460-
window.dataBytes = calculateDataBytesOccupied(window.staticDataAddresses);
461-
}
458+
// // Recalcular datos totales después de retroceder
459+
// if (typeof window !== 'undefined') {
460+
// window.dataBytes = calculateDataBytesOccupied(window.staticDataAddresses);
461+
// }
462462

463463
// Decrementar contador global de steps
464464
if (typeof window !== 'undefined') {
@@ -529,9 +529,6 @@ export class MarieSim {
529529
this.addLog(action);
530530
}
531531

532-
if (typeof window !== 'undefined' && action && ['memwrite', 'memset'].includes(action.type)){
533-
window.dataBytes = calculateDataBytesOccupied(window.staticDataAddresses);
534-
}
535532
// Sumar al contador global
536533
if (typeof window !== 'undefined' && isRealMicroStep(action)) {
537534
window.microStepCount = (window.microStepCount || 0) + 1;
@@ -551,8 +548,11 @@ export class MarieSim {
551548
const action = this._decoded.microSteps[pos](this);
552549
if (action) {
553550
this.addLog(action);
554-
if (typeof window !== 'undefined' && ['memwrite', 'memset'].includes(action.type)) {
555-
window.dataBytes = calculateDataBytesOccupied(window.dynamicDataAddresses);
551+
if (typeof window !== 'undefined' && action && ['memwrite', 'memset'].includes(action.type)) {
552+
window.dataBytes = calculateDataBytesOccupied(
553+
window.staticDataAddresses,
554+
window.dynamicDataAddresses
555+
);
556556
}
557557
}
558558

@@ -643,10 +643,10 @@ export class MarieSim {
643643
window.microStepCount = Math.max(0, window.microStepCount - 1);
644644
}
645645

646-
// Recalcular datos totales después de retroceder
647-
if (typeof window !== 'undefined') {
648-
window.dataBytes = calculateDataBytesOccupied(window.staticDataAddresses);
649-
}
646+
// // Recalcular datos totales después de retroceder
647+
// if (typeof window !== 'undefined') {
648+
// window.dataBytes = calculateDataBytesOccupied(window.staticDataAddresses);
649+
// }
650650

651651
return last;
652652
}
@@ -701,8 +701,11 @@ export class MarieSim {
701701
window.dynamicDataAddresses = new Set();
702702
}
703703
window.dynamicDataAddresses.add(this._registers.MAR);
704-
705-
window.dataBytes = calculateDataBytesOccupied(window.staticDataAddresses);
704+
705+
window.dataBytes = calculateDataBytesOccupied(
706+
window.staticDataAddresses,
707+
window.dynamicDataAddresses
708+
);
706709
}
707710

708711
return {
@@ -1025,8 +1028,11 @@ export class MarieSim {
10251028
sim._halted = true;
10261029
// Recalcular datos totales al llegar a HALT
10271030
if (typeof window !== 'undefined') {
1028-
window.dataBytes = calculateDataBytesOccupied(window.staticDataAddresses);
1029-
}
1031+
window.dataBytes = calculateDataBytesOccupied(
1032+
window.staticDataAddresses,
1033+
window.dynamicDataAddresses
1034+
);
1035+
}
10301036
return {
10311037
type: 'halt',
10321038
halt: true,
@@ -1435,17 +1441,14 @@ export function isRealMicroStep(action: Action | null): boolean {
14351441
return realTypes.includes(action.type);
14361442
}
14371443

1438-
export function calculateDataBytesOccupied(staticDataAddresses: Set<number>) {
1439-
const allData = new Set([...staticDataAddresses]);
1444+
export function calculateDataBytesOccupied( staticDataAddresses: Set<number>, dynamicDataAddresses: Set<number>): number {
1445+
const allData = new Set([...staticDataAddresses]);
14401446

1441-
if(typeof window !== 'undefined' && window.dynamicDataAddresses !== undefined){
1442-
const dynamic = window.dynamicDataAddresses;
1443-
for (const addr of dynamic) {
1444-
allData.add(addr);
1445-
}
1446-
}
1447+
for (const addr of dynamicDataAddresses) {
1448+
allData.add(addr);
1449+
}
14471450

1448-
// Cada palabra ocupa 2 bytes
1449-
return allData.size * 2;
1451+
// Cada palabra ocupa 2 bytes
1452+
return allData.size * 2;
14501453
}
14511454

0 commit comments

Comments
 (0)