Code Monkey home page Code Monkey logo

complx's People

Contributors

ausbin avatar cgokmen avatar jgkamat avatar lewisdoesstuff avatar lucasec avatar mmirate avatar skyman avatar thomascoe avatar tricksterguy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

complx's Issues

Rewrite comp in python

This could turn into a possible job if I find problems with it.

Update the makefile so that comp is compiled and installed (if it hasn't already).

Speed of opening a new memory view.

Opening a memory view is kinda slow (about 2.5 seconds).
Investigate what causes the slowness and alleviate it.
Fixing this would also speed up opening complx itself.

Minimize lc3os code

Randomize clobbers all of memory including the trap vector table (and friends).

Think of a way to handle the case where student
Randomize + load file.
Set true traps.

This case will create three separate items to overlay into memory
The randomized memory
The students code
The trap vector table / interrupt vector table / trap handlers.

ETA next semester.

Finish timer plugins

Could be an easy job for someone to do

  1. Second timer - I was thinking of a count up timer, can be started stopped or paused through writes to a memory address.
  2. Timer - Just gets the current time in number of seconds since midnight (12 hour format)

Problem with font colors and themes

I have a theme for Linux which does re skin the program properly, but I am running into a problem where the labels are the same color as be background and become unreadable. If you could add an option to change the text font or hard code the color for the background then the problem would be fixed.

Image with text labels being unreadable (nothing selected):
Image with text labels being unreadable

Image with text being selected to show the labels (text fields selected):
Image with text being selected to show the labels

Write a Text Editor that integrates with complx

Requested in Fall 2014 feedback.

I think it should feature the following

  1. Integration with complx
  2. LC-3 flavoured syntax highlighting
  3. Ability to set breakpoints in assembly code
  4. Ability to see what line from .asm file is being executed in complx

A prototype can be found in the lc3edit folder. I originally was going to do this to get some experience with the wxScintilla widget, but if someone wants to do it then be my guest

Add a subroutine caller to complx

This option will pop up a dialog asking user for following information

  1. Subroutine to call
  2. Parameters to subroutine
  3. Stack location

The effects of this dialog are as follows:
The file is reloaded, Registers are randomized and Memory is randomized
PC = SUBROUTINE
The stack is loaded with parameters to subroutine

Essentially this is the same environment lc3test uses.
This is due for Fall 2015 semester.

Investigate Control buttons.

Seems as though the control buttons come up at inappropriate times.

For instance the buttons change to NO IO after some I/O from the console is consumed.

Complx on OSX

Hey, I'm that guy from piazza, I know for class we're supposed to develop on linux, but for running it on my macbook on the go it'd be kinda handy.

Building complx on OSX just takes installing wxMac via homebrew and a tiny tweak to two of the makefiles's LDFLAGS (they use -soname, whereas clang supports -install_name). I think the install directory should be different too, but I just set PREFIX=./where/you/want/complx on the commandline for make.

If you're interested, I'll open a PR with the changes. I understand if you don't want to add another platform, but the changes are pretty minimal.

Basically just:
liblc3/Makefile:

UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Darwin)
    LDFLAGS := $(MASTER_CPP_FLAGS) -fPIC -Wall -shared -Wl,-install_name,$(OUTPUT) -L.
else
    LDFLAGS := $(MASTER_CPP_FLAGS) -fPIC -Wall -shared -Wl,-soname,$(OUTPUT) -L.
endif

lc3plugins/Makefile:

UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Darwin)
    LDFLAGS = $(MASTER_CPP_FLAGS) -fPIC -Wall -shared -L../liblc3 -Wl,-install_name,$@
else
    LDFLAGS = $(MASTER_CPP_FLAGS) -fPIC -Wall -shared -L../liblc3 -Wl,-soname,$@
endif

Running smoothly so far:
screen shot 2015-09-20 at 10 48 16 pm

crashing

Sometimes complx just crashes for no reason.

Integrate a calling convention checker into lc3test

In its current state to check if the lc3 calling convention was followed one must check each individual address of things on the stack.

Should also handle the case where someone decided to store extra things onto the stack.

Activation Stack viewer was implemented as of summer's release.

ETA should have been this semester however I forgot.

Write a LC3Test Xml Generator [for complx]

This is actually two jobs.

  1. A simple command line interface that just generates the test xml files.
    Design it however you want some ideas
  2. You can read the .asm file and automatically determine what the input and output is via looking at the symbol table and then ask the user for test input and output values
  3. Just ask the user several questions (like input symbol name, what is the type of it, etc) and then ask for test input output values
  4. Integrating this in complx

Complx: assertion failed when poking around test results dialog

To replicate, run the test XML below on working code. In the test report dialog, expand the root of the tree, and click the first child (labeled "MC91 (101)"). Error should occur before the frame is rendered.

Test XML:

<?xml version="1.0"?>
<test-suite>
    <!-- Test case you may have multiple of these --> 
    <test-case> 
        <name>mc91(101)</name>
        <!-- This flag determines if the test has a time limit in number of instructions default is 0 (false). Best practice is to always use this. --> 
        <has-max-executions>1</has-max-executions>
        <!-- The maximum number of instructions to run for.  Only works if the above flag for has-max-executions is 1 (true) --> 
        <max-executions>1000000</max-executions>
        <!-- Randomize memory before the test default is 0 (false)--> 
        <randomize>1</randomize>
        <!-- Specify the inputs to your assembly code here --> 
        <input>
        <!-- Parameter setting change N to be 101 -->
            <test-value><address>N</address><value>101</value></test-value>
            <!-- Prepare to call subroutine MC91 the following shall happen -->
            <!-- Set the Stack pointer R6 to xF000 -->
            <!-- Set the Return address R7 to x5000, A halt statement shall be placed here as well -->
            <!-- Set the Frame pointer R5 to be some value, after your code is finished running R5 better be the same value. -->
            <!-- Parameters will be loaded in the stack as specified in the calling convention and R6 shall point to the first parameter -->
            <test-subr><name>MC91</name><stack>xF000</stack><r7>x5000</r7><r5>xCAFE</r5><params>MEM[N]</params></test-subr>
        </input>
        <!-- Specify things you want to verify here -->
        <output>
            <!-- Answer is 91, no local variables-->
            <!-- The following checks are made -->
            <!-- R6 should be pointing at xEFFE (initial stack - num_params - 1) -->
            <!-- xEFFE must contain the answer 91 -->
            <!-- PC must be pointing at the return address specified above (x5000) -->
            <!-- R5 must contain the old frame pointer value specified above (xCAFE) -->
            <!-- Parameter 101 must not be modified and should still be located at xEFFF -->
            <!-- Return address x5000 should be located at xEFFD -->
            <!-- Old frame pointer xCAFE should be located at xEFFC -->
            <test-subr>
                <answer>91</answer>
                <!-- No local variables, so not including a locals tag -->
                <!-- Ignore this section unless you are a TA -->
                <points>
                    <answer>1</answer>
                    <params>1</params>
                    <r7>1</r7>
                    <r6>1</r6>
                    <r5>1</r5>
                    <locals>1</locals>
                </points>
                <deductions-per-mistake>1</deductions-per-mistake>
            </test-subr>
        </output>
    </test-case>
</test-suite>

Assertion details:

ASSERT INFO:
/usr/include/wx-3.0/wx/strvararg.h(456): assert "(argtype & (wxFormatStringSpecifier<T>::value)) == argtype" failed in wxArgNormalizer(): format specifier doesn't match argument type

BACKTRACE:
[1] TestCaseInfoPanel::Update(lc3_test&)
[2] RunTestDialog::OnSelectTestItem(wxTreeEvent&)
[3] wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const
[4] wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&)
[5] wxEvtHandler::SearchDynamicEventTable(wxEvent&)
[6] wxEvtHandler::TryHereOnly(wxEvent&)
[7] wxEvtHandler::ProcessEventLocally(wxEvent&)
[8] wxEvtHandler::ProcessEvent(wxEvent&)
[9] wxScrollHelperEvtHandler::ProcessEvent(wxEvent&)
[10] wxGenericTreeCtrl::DoSelectItem(wxTreeItemId const&, bool, bool)
[11] wxGenericTreeCtrl::OnMouse(wxMouseEvent&)
[12] wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const
[13] wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&)
[14] wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*)
[15] wxEvtHandler::TryHereOnly(wxEvent&)
[16] wxEvtHandler::ProcessEventLocally(wxEvent&)
[17] wxEvtHandler::ProcessEvent(wxEvent&)
[18] wxScrollHelperEvtHandler::ProcessEvent(wxEvent&)
[19] wxEvtHandler::SafelyProcessEvent(wxEvent&)
[20] g_closure_invoke
[21] g_signal_emit_valist
[22] g_signal_emit
[23] gtk_propagate_event
[24] gtk_main_do_event
[25] g_main_context_dispatch
[26] g_main_loop_run
[27] gtk_main
[28] wxGUIEventLoop::DoRun()
[29] wxEventLoopBase::Run()
[30] wxDialog::ShowModal()
[31] ComplxFrame::OnRunTests(wxCommandEvent&)
[32] wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const
[33] wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&)
[34] wxEvtHandler::SearchDynamicEventTable(wxEvent&)
[35] wxEvtHandler::TryHereOnly(wxEvent&)
[36] wxEvtHandler::ProcessEventLocally(wxEvent&)
[37] wxEvtHandler::ProcessEvent(wxEvent&)
[38] wxWindowBase::TryAfter(wxEvent&)
[39] wxEvtHandler::SafelyProcessEvent(wxEvent&)
[40] wxMenuBase::SendEvent(int, int)
[41] g_closure_invoke
[42] g_signal_emit_valist
[43] g_signal_emit
[44] g_main_context_dispatch
[45] g_main_loop_run
[46] gtk_main
[47] wxGUIEventLoop::DoRun()
[48] wxEventLoopBase::Run()
[49] wxAppConsoleBase::MainLoop()
[50] wxEntry(int&, wchar_t**)
[51] main
[52] __libc_start_main
[53] _start

Backspace doesn't work editing single instruction

Repro steps:

  1. Open Complx with any file open.
  2. Double click on a NOP in the "Instruction Column"
  3. Type "ADD R1," (this is how I found it, but it works for others too)
  4. Observe that backspace does not delete characters.

-Matthew

.blkw and as2obj

I recall that blkw should not initialize the memory thats allocated and if Load Over or Randomized and load is used that memory should not be 0.

Possible bug?

More helpful assembler error messages

If there are problems with a line then we should at least point out what part of the line is causing the error

example

ADD R0, R0, 105

105 overflows a signed 5 bit offset
ADD R0, R0, << 105 >>

A way for Memory View to just show certain interesting address ranges

  1. The user should be able to specify a region of memory they are interested in viewing in the MemoryView
  2. There should be a magic button (menu option) that removes all memory addresses containing 0 (This should take effect before randomization happens)
  3. Another magic button (menu option) that removes all memory addresses not related to the program (this should happen on loading program). This will probably require magic hooks to be added in the assembler.

Leaving task as job for anyone reading who is interested, but if not resolved soon I'll just code this up myself.

Plugins

Plugins are broken as of version 4.6.0.0 probably due to the build system.

Update install script

In about one semester most steps in the install script will be pointless and unnecessary since wxwidgets 3.0 should be available in official repos by then.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.