edumips64 | Free cross-platform educational MIPS64 CPU Simulator

 by   EduMIPS64 Java Version: v1.2.10 License: GPL-2.0

kandi X-RAY | edumips64 Summary

edumips64 is a Java library typically used in Simulation applications. edumips64 has no bugs, it has no vulnerabilities, it has a Strong Copyleft License and it has high support. However edumips64 build file is not available. You can download it from GitHub.
EduMIPS64 is a free cross-platform visual MIPS64 CPU simulator written in Java. The EduMIPS64 web site is There is also a developers' blog at To download the current stable release, go to the GitHub page for the latest release, which contains JARs, PDFs with the user documentation and zip/tar.gz files with the source code. The user documentation is also available online at ReadTheDocs: For the italian version, click the selector at the bottom-right corner and choose the it translation. The JAR for the latest development version is available by looking for the last GitHub Actions build that ran on the master branch (full list here). ️ This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to andrea.spadaccini@gmail.com. ️ To contribute to EduMIPS64, please start by reading the developer guide. 🧪 The proof-of-concept JS web application (GWT compilation + JS UI) is available at Find us on IRC @ Libera.chat - #edumips64. Web client:
    Support
      Quality
        Security
          License
            Reuse
            Support
              Quality
                Security
                  License
                    Reuse

                      kandi-support Support

                        summary
                        edumips64 has a highly active ecosystem.
                        summary
                        It has 151 star(s) with 55 fork(s). There are 10 watchers for this library.
                        summary
                        It had no major release in the last 12 months.
                        summary
                        There are 52 open issues and 166 have been closed. On average issues are closed in 200 days. There are 4 open pull requests and 0 closed requests.
                        summary
                        It has a neutral sentiment in the developer community.
                        summary
                        The latest version of edumips64 is v1.2.10
                        edumips64 Support
                          Best in #Java
                            Average in #Java
                            edumips64 Support
                              Best in #Java
                                Average in #Java

                                  kandi-Quality Quality

                                    summary
                                    edumips64 has 0 bugs and 0 code smells.
                                    edumips64 Quality
                                      Best in #Java
                                        Average in #Java
                                        edumips64 Quality
                                          Best in #Java
                                            Average in #Java

                                              kandi-Security Security

                                                summary
                                                edumips64 has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
                                                summary
                                                edumips64 code analysis shows 0 unresolved vulnerabilities.
                                                summary
                                                There are 0 security hotspots that need review.
                                                edumips64 Security
                                                  Best in #Java
                                                    Average in #Java
                                                    edumips64 Security
                                                      Best in #Java
                                                        Average in #Java

                                                          kandi-License License

                                                            summary
                                                            edumips64 is licensed under the GPL-2.0 License. This license is Strong Copyleft.
                                                            summary
                                                            Strong Copyleft licenses enforce sharing, and you can use them when creating open source projects.
                                                            edumips64 License
                                                              Best in #Java
                                                                Average in #Java
                                                                edumips64 License
                                                                  Best in #Java
                                                                    Average in #Java

                                                                      kandi-Reuse Reuse

                                                                        summary
                                                                        edumips64 releases are available to install and integrate.
                                                                        summary
                                                                        edumips64 has no build file. You will be need to create the build yourself to build the component from source.
                                                                        summary
                                                                        edumips64 saves you 8926 person hours of effort in developing the same functionality from scratch.
                                                                        summary
                                                                        It has 17987 lines of code, 1439 functions and 295 files.
                                                                        summary
                                                                        It has medium code complexity. Code complexity directly impacts maintainability of the code.
                                                                        edumips64 Reuse
                                                                          Best in #Java
                                                                            Average in #Java
                                                                            edumips64 Reuse
                                                                              Best in #Java
                                                                                Average in #Java
                                                                                  Top functions reviewed by kandi - BETA
                                                                                  kandi has reviewed edumips64 and discovered the below as its top functions. This is intended to give you an instant insight into edumips64 implemented functionality, and help decide if they suit your requirements.
                                                                                  • Open memory
                                                                                    • Converts a hexadecimal string into a relative long value
                                                                                    • Writes some bytes to a file
                                                                                    • Read a number of bytes from a file
                                                                                  • Run the CPU
                                                                                    • Determines if this cycle is valid
                                                                                    • Returns the cycle element to be updated
                                                                                    • Update the cycle
                                                                                  • This method is used to process the procedure
                                                                                  • Create the appearance panel
                                                                                  • Gets the cell s rectangle
                                                                                  • Add the buttons
                                                                                  • Paint the grid
                                                                                  • Computes the SMTP
                                                                                  • Performs the reduction
                                                                                  • This method performs EXECUTE
                                                                                  • Compute the SMTP
                                                                                  • Performs an atomic operation
                                                                                  • Converts a hexadecimal string to a relative short value
                                                                                  • Converts hexadecimal string to relative long value
                                                                                  • Initialize the module
                                                                                  • Update the columns
                                                                                  • Perform EXEC operation
                                                                                  • Build the rounding panel
                                                                                  • Link a list of artifacts to a JavaScript function
                                                                                  • Perform the EXOR operation
                                                                                  Get all kandi verified functions for this library.
                                                                                  Get all kandi verified functions for this library.

                                                                                  edumips64 Key Features

                                                                                  Free cross-platform educational MIPS64 CPU Simulator

                                                                                  edumips64 Examples and Code Snippets

                                                                                  Example: Augment Images and Segmentation Maps
                                                                                  pypidot imgLines of Code : 15dot imgno licencesLicense : No License
                                                                                  copy iconCopy
                                                                                  
                                                                                                                      import numpy as np import imgaug.augmenters as iaa # Standard scenario: You have N=16 RGB-images and additionally one segmentation # map per image. You want to augment each image and its heatmaps identically. images = np.random.randint(0, 255, (16, 128, 128, 3), dtype=np.uint8) segmaps = np.random.randint(0, 10, size=(16, 64, 64, 1), dtype=np.int32) seq = iaa.Sequential([ iaa.GaussianBlur((0, 3.0)), iaa.Affine(translate_px={"x": (-40, 40)}), iaa.Crop(px=(0, 10)) ]) images_aug, segmaps_aug = seq(images=images, segmentation_maps=segmaps)
                                                                                  
                                                                                  Segmentation of afish image .
                                                                                  pythondot imgLines of Code : 13dot imgLicense : Permissive (MIT License)
                                                                                  copy iconCopy
                                                                                  
                                                                                                                      def segment_fish(image): """Attempts to segment the clown fish out of the provided image.""" hsv_image = cv2.cvtColor(image, cv2.COLOR_RGB2HSV) light_orange = (1, 190, 200) dark_orange = (18, 255, 255) mask = cv2.inRange(hsv_image, light_orange, dark_orange) light_white = (0, 0, 200) dark_white = (145, 60, 255) mask_white = cv2.inRange(hsv_image, light_white, dark_white) final_mask = mask + mask_white result = cv2.bitwise_and(image, image, mask=final_mask) result = cv2.GaussianBlur(result, (7, 7), 0) return result
                                                                                  Community Discussions

                                                                                  Trending Discussions on edumips64

                                                                                  How to print an array, or a formatted string in EDUMIPS64 simulator?
                                                                                  chevron right

                                                                                  QUESTION

                                                                                  How to print an array, or a formatted string in EDUMIPS64 simulator?
                                                                                  Asked 2020-Feb-10 at 13:37

                                                                                  The documentation for this program is extremely limited. There's almost nothing i can draw from in order to do that. Along with the PDF of the program there's only this:

                                                                                  .data
                                                                                  format_str:     .asciiz "%dth of %s:\n%s version %i.%i is being tested!"
                                                                                  s1:             .asciiz "June"
                                                                                  s2:             .asciiz "EduMIPS64"
                                                                                  fs_addr:        .space  4
                                                                                                  .word   5
                                                                                  s1_addr:        .space  4
                                                                                  s2_addr:        .space  4
                                                                                                  .word   0
                                                                                                  .word   5
                                                                                  test:
                                                                                  .code
                                                                                          daddi r5, r0, format_str
                                                                                          sw r5, fs_addr(r0)
                                                                                          daddi r2, r0, s1
                                                                                          daddi r3, r0, s2
                                                                                          sd r2, s1_addr(r0)
                                                                                          sd r3, s2_addr(r0)
                                                                                          daddi r14, r0, fs_addr
                                                                                          syscall 5
                                                                                          syscall 0
                                                                                  

                                                                                  You can check it out here. EDU/WINMIPS64 is very different from regular MIPS assembly

                                                                                  There are a couple of paragraphs explaining this, that are of not much help. At any rate, this here prints a formatted string, along with some string parameters (stored in s1 and s2) and integer parameters (where are they stored?).

                                                                                  I have two arrays stored in memory. I have personally executed instructions upon them and now i want to print them. How do i supply on such a formatted string these two integers (which are double words, ie. needing 8 bytes to be stored)? The help material doesn't explain.

                                                                                  This is the code that i have managed to create up to this point (heavily commented):

                                                                                  ....
                                                                                  dadd $s4, $zero, $zero                  ; i = 0
                                                                                  printOutput:                                    ; print results from the 2 arrays
                                                                                          beq $s4, 960, end                       ; if (i = size = 960 / 8) goto end
                                                                                          dadd $s1, $s4, $s2                      ; full address of 1st array
                                                                                          dadd $s0, $s4, $s3                      ; full address of 2nd array
                                                                                  
                                                                                          daddi $a3, $zero, printString           ; address ofstring to be printed stored in $a3
                                                                                          ld $v0, 0($s1)                          ; $v0 will be used to print 1st array[i]. Is this right?
                                                                                          ld $v1, 0($s2)                          ; $v1 will be used to print 2nd array[i]. Is this right? Which register to use for supplying a formatted string to print integers? It is not explained anywhere! 
                                                                                          dadd $14, $zero, $a3                    ; print string. $14 is the register to syscall instructions. But i'm just guessing with this. I really don't know how it should handle. I just supplied $a3 because it seems more intuitive.
                                                                                  
                                                                                          syscall 5                               ; prints ouput (on the MEM stage)
                                                                                          daddi $s4, $s4, 8                       ; i++
                                                                                          j printOutput
                                                                                  end:
                                                                                  

                                                                                  If anyone knows how to do this, i would be very greatful if he/she could share. There's not any examples on this anywhere. Thanks.

                                                                                  UPDATE

                                                                                  With the help of Michael and by trial and error i found the main cause of the problem. The sequence where we supply the labels for the output string and other memory addresses is very sensitive. By trial and error i found that we must obey the following order:

                                                                                  .data
                                                                                  format_string .asciiz "%d and %i etc.."
                                                                                  start_address .space  4
                                                                                  syscallArg1   .space  4                   ; 1st parameter to syscall 5
                                                                                  syscallArg2   .space  4                   ; 2nd parameter to syscall 5
                                                                                  ---other labels go here---
                                                                                  .text
                                                                                  ---code---
                                                                                  

                                                                                  Note that we have to supply to $14 the start_address label, which must not contain anything (just some available empty space). Before this one the formatted string must go and after this one the arguments to the syscall 5 must lie. Other labels can go afterwards, or before all those.

                                                                                  ANSWER

                                                                                  Answered 2017-May-02 at 14:58

                                                                                  What the manual says is that you should store the address of the format string, followed by zero or more parameters (e.g. an integer or a string address), in continuous memory, and then load the starting address of that memory into r14 before executing sycall 5.

                                                                                  Their example code looks slightly incorrect to me, because they should be using sw rather than sd to store r2 and r3 in memory (assuming that the string addresses actually fit in 32 bits).

                                                                                  So you need to reserve some space in the data section, and then store first the address of your format string, followed by any parameters. And then place the starting address of that piece of memory in r14. For example, if your format string was "%d, %d" and the two values you want to print are in r2 and r3 you would sw r2 and r3 directly after where you store the address of the format string.

                                                                                  For example:

                                                                                  .data
                                                                                  format_str: .asciiz "%d"
                                                                                  printf_args: .space 8
                                                                                  ...
                                                                                  .code
                                                                                  daddi r5, r0, format_str
                                                                                  sw r5, printf_args(r0)
                                                                                  daddi r5, r0, 123
                                                                                  sw r5, printf_args+4(r0)
                                                                                  daddi r14, r0, printf_args
                                                                                  syscall 5
                                                                                  

                                                                                  Source https://stackoverflow.com/questions/43729250

                                                                                  Community Discussions, Code Snippets contain sources that include Stack Exchange Network

                                                                                  Vulnerabilities

                                                                                  No vulnerabilities reported

                                                                                  Install edumips64

                                                                                  You can download it from GitHub.
                                                                                  You can use edumips64 like any standard Java library. Please include the the jar files in your classpath. You can also use any IDE and you can run and debug the edumips64 component as you would do with any other Java program. Best practice is to use a build tool that supports dependency management such as Maven or Gradle. For Maven installation, please refer maven.apache.org. For Gradle installation, please refer gradle.org .

                                                                                  Support

                                                                                  For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
                                                                                  Find more information at:
                                                                                  Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
                                                                                  Find more libraries
                                                                                  Explore Kits - Develop, implement, customize Projects, Custom Functions and Applications with kandi kits​
                                                                                  Save this library and start creating your kit

                                                                                  Share this Page

                                                                                  share link
                                                                                  Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
                                                                                  Find more libraries
                                                                                  Explore Kits - Develop, implement, customize Projects, Custom Functions and Applications with kandi kits​
                                                                                  Save this library and start creating your kit