Releases: immortalvm/yet-another-fast-ivm-emulator
Managing tty orientation and using wchar if possible
VERSION_2_1_5 Manage tty orientation and use wchar if possible
Fixed bugs in original I/O routines
Some bugs in C routines for imv64 I/O instructions coming from /~https://github.com/immortalvm/ivm-implementations have been fixed.
Updated to architecture ivm-2.1
By default, terminal line (tty) is set to no echo and no icanon
Updated to architecture ivm-2.0
Many other cumulative improvements added.
Minor changes
The executable generated by 'ex_ivm_io.c' example shows the use of the enviroment variables IVM_INDIR and IVM_OUTDIR used by LD shebang in ivm64-gcc 1.3
ivm_emu.zip
Improve behavior in case of error
Some testing program seg-fault with x86 gcc, so ivm_emu should trigger a second seg-fault after handling the first.
More output info in case of error
VERSION_1_14 More output info in case of error
Fixed bug
Please, update to this version.
This solves a problem with a insn pattern in optimized executables (executables compiled with -NOOPT are not affected)
This version of ivm_emu is compatible with the new opcodes layout
DEBUGGING
Version v1.12 of ivm_emu_fast
can be compiled to generate executables that are useful for
debugging. Examples of this capabilities are: ivm_histo
, ivm_trace2
and ivm_trace3
.
To allow dinamically activation/deactivation of program tracing, and to extract information of
executed instructions in a code section, the Yet another IVM emulator
admits three unnused
opcodes: 0xf0, 0xf1, 0xf2 and 0xf3.
In directory samples
, a C code using this facility can be found: 30_hanoi_probe.c
.
This sample code includes the header probe.h
which contains the macros to easily insert the
appropiate opcodes into the C code (as if they were function calls).
After this, compile the program and assemble it:
ivm64-gcc 30_hanoi_probe.c -o 30_hanoi_probe -DWITH_IVM64_PROBES
ivm as 30_hanoi_probe
At this point, the binary contains non-standard opcodes, so it can not be executed using vm
.
Execute the binary using Yet another IVM emulator:
ivm_emu 30_hanoi_probe.b
The program makes it normal execution, printing all its output and at the end, the emulator
print the gathered information, for example:
Binary file size: 172315 bytes (172.3 KB)
Executed 38070971 instructions
Probe 0: 13732
Probe 1: 180166
Probe 2: 2936
Probe 3: 37874142
End stack:
0x..000000 0
To obtain a binary without the non-standard opcodes, just compile the program without WITH_IVM64_PROBES:
ivm64-gcc 30_hanoi_probe.c -o 30_hanoi_probe
This way, all sentences like ivm64_set_probe(1)
,ivm64_trace_off
,ivm64_trace_hard
,
etc, are ignored.