Skip to content

Releases: immortalvm/yet-another-fast-ivm-emulator

Managing tty orientation and using wchar if possible

29 Nov 10:42
Compare
Choose a tag to compare
VERSION_2_1_5

Manage tty orientation and use wchar if possible

Fixed bugs in original I/O routines

17 May 10:23
Compare
Choose a tag to compare

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

26 Feb 17:53
Compare
Choose a tag to compare

By default, terminal line (tty) is set to no echo and no icanon

Updated to architecture ivm-2.0

28 Jun 17:36
Compare
Choose a tag to compare

Many other cumulative improvements added.

Minor changes

10 Feb 20:30
Compare
Choose a tag to compare
Minor changes Pre-release
Pre-release

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

26 Dec 12:46
Compare
Choose a tag to compare
Pre-release

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

18 Dec 10:16
Compare
Choose a tag to compare
Pre-release
VERSION_1_14

More output info in case of error

Fixed bug

15 Dec 13:06
Compare
Choose a tag to compare
Fixed bug Pre-release
Pre-release

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

11 Dec 18:56
Compare
Choose a tag to compare

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.