8000 stack push had a bug · sha0coder/libscemu@854e19c · GitHub
[go: up one dir, main page]

Skip to content
This repository was archived by the owner on Dec 27, 2024. It is now read-only.

Commit 854e19c

Browse files
committed
stack push had a bug
1 parent 17c405c commit 854e19c

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

src/emu.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ impl Emu {
412412
self.flags.f_nt = false;
413413
}
414414

415-
pub fn init(&mut self, clear_registers: bool) {
415+
pub fn init(&mut self, clear_registers: bool, clear_flags: bool) {
416416
self.pos = 0;
417417

418418
if !atty::is(Stream::Stdout) {
@@ -426,12 +426,16 @@ impl Emu {
426426
if clear_registers {
427427
self.regs.clear::<64>();
428428
}
429+
if clear_flags {
430+
self.flags.clear();
431+
}
429432
//self.regs.rand();
430433

431434
if self.cfg.is_64bits {
432435
self.regs.rip = self.cfg.entry_point;
433436
self.maps.is_64bits = true;
434-
self.init_regs_tests();
437+
438+
//self.init_regs_tests(); // TODO: not sure why this was on
435439
self.init_mem64();
436440
self.init_stack64();
437441
//self.init_stack64_tests();
@@ -1102,7 +1106,7 @@ impl Emu {
11021106
rip: self.regs.rip,
11031107
op: "write".to_string(),
11041108
bits: 32,
1105-
address: self.regs.get_esp(),
1109+
address: self.regs.get_esp() - 4,
11061110
old_value: self.maps.read_dword(self.regs.get_esp()).unwrap_or(0) as u64,
11071111
new_value: value as u64,
11081112
name: name.clone(),
@@ -1163,7 +1167,7 @@ impl Emu {
11631167
rip: self.regs.rip,
11641168
op: "write".to_string(),
11651169
bits: 64,
1166-
address: self.regs.rsp,
1170+
address: self.regs.rsp - 8,
11671171
old_value: self.maps.read_qword(self.regs.rsp).unwrap_or(0) as u64,
11681172
new_value: value as u64,
11691173
name: name.clone(),
@@ -4283,7 +4287,7 @@ impl Emu {
42834287
continue;
42844288
}
42854289
// 00000098EB5DDFF0: 7FFC65FF8B8F-> 7FFBEF4E5FF0
4286-
memory = format!("{} {:x}: {:x}-> {:x}", memory, memory_op.address, memory_op.old_value, memory_op.new_value);
4290+
memory = format!("{} {:016X}: {:X}-> {:X}", memory, memory_op.address, memory_op.old_value, memory_op.new_value);
42874291
}
42884292

42894293
let mut trace_file = self.cfg.trace_file.as_ref().unwrap();

0 commit comments

Comments
 (0)
0