summaryrefslogtreecommitdiffhomepage
path: root/samples
AgeCommit message (Collapse)Author
2019-04-09Change vm->address_list from GSList to GQueueJose Antonio Ortega Ruiz
The current emulator uses an unbounded linked list for tracking the memory locations our program has traveled through. On a 64 bit system, this requires 16 bytes of data for every instruction a MIX program performs. For small programs that are light on computation cycles, this does not cause a noticeable issue. For programs that execute hundreds of millions of instructions, this causes the memory footprint of the virtual machine to explode. I have attached an example MIXAL program that will cause the VM to grow to over 3 GB of memory usage when run. To run the sample, compile coin-opt.mixal (attached), run it in mixvm, and enter 499 at the prompt. Or use the following steps. This patch changes all the appropriate references to GQueue references and also caps the backtrace at 1000, which can be changed in the mixlib/mix_vm.h header. I feel like 1000 is a reasonable limit for the vast majority of debugging needs. Most people are looking back at the most recent 100 instructions or so. You can get the original behavior (unlimited tracing) back by setting the MIX_MAXTRACE to -1, albeit with a slightly higher memory cost (24 bytes per instruction). Or you can turn it off entirely by setting it to 0. Using a queue doesn't change the logic of the program in any significant way, and it allows programs to run for an extended period of time without consuming all the memory on the machine and slowing down to a crawl. -Kevin Brunelle
2019-01-08Fix for mixasm infinite loop on invalid F-specs (bug #32452)Jose Antonio Ortega Ruiz
Thanks to Sascha Wilde.
2019-01-08Fix for bug #43634: keep sign of rA for ADD/SUB yielding 0Jose Antonio Ortega Ruiz
2013-02-23Generating ChangeLog during make distJose Antonio Ortega Ruiz
2013-02-18Additional samples and doc from TAOCP, via ESR's MIXALJose Antonio Ortega Ruiz
2008-08-31.ignore files for the compilation productsjao
2008-03-15arch-inventory files removedJose Antonio Ortega Ruiz
2008-03-15More ignored filesJose Antonio Ortega Ruiz
2008-03-15Ignore files generated by autogen.shJose Antonio Ortega Ruiz
2006-08-08External programs management improvementJose Antonio Ortega Ruiz
- External programs (editor and mixasm) execution is more robustly controlled both in mixvm and gmixvm. - In gmixvm the external programs dialog has been revamped: - Only proper paths can be introduced for the executables (via a graphical file chooser). - Flags for mixasm are no longer free text, but a check button. - Internally, the code has been refactored. git-archimport-id: mdk@sv.gnu.org/mdk--devel--1--patch-28
2006-08-05All tests passing again (mix parser re-entrant)Jose Antonio Ortega Ruiz
git-archimport-id: mdk@sv.gnu.org/mdk--devel--1--patch-17
2006-08-05Compilation tests re-enabledJose Antonio Ortega Ruiz
git-archimport-id: mdk@sv.gnu.org/mdk--devel--1--patch-16
2006-08-05Invalid F-spec reported as warnings, to allow hacks as CMPX xxxx(6)Jose Antonio Ortega Ruiz
git-archimport-id: mdk@sv.gnu.org/mdk--devel--1--patch-13
2006-03-24CVS $Id$ tags removed.Jose Antonio Ortega Ruiz
git-archimport-id: mdk@sv.gnu.org/mdk--devel--1--patch-7
2006-03-21Arch inventory files addedJose Antonio Ortega Ruiz
git-archimport-id: mdk@sv.gnu.org/mdk--devel--1--patch-4
2006-03-20Version 1.2.1 imported1.2.1Jose Antonio Ortega Ruiz
git-archimport-id: mdk@sv.gnu.org/mdk--devel--1--patch-1