MIPS-Assembly: How to 'define' subroutine for later use

gordlonious

There are tons of great examples on how to properly follow MIPS function calling conventions. However, I'm getting stuck on how to use a function only when 'called'. The following will print 51 (using MARS):

.data
strproc: .asciiz "procedure example"
strnl: .ascii "\n"

.text
printnl: li $v0, 1
li $a0, 5
syscall

#jal printnl

li $v0, 1
li $a0, 1
syscall

However, I'd really like to be able to only execute the instructions associated with the printnl label when jumped and linked to (when 'called'). Is this feasible in MIPS? Feel free to criticize my design inclinations as part of your answer. I'm not sure how I should go about writing a simple assembly program who may have need of a lot of repeated instructions.

I did try this (but it doesn't assemble):

.data
strproc: .asciiz "procedure example"
strnl: .ascii "\n"

printnl: li $v0, 1
li $a0, 5
syscall

.text
li $v0, 1
li $a0, 1
syscall
jal printnl
fuz

Execution progresses from one instruction to the next unless you redirect it. In SPIM I guess execution begins at the beginning of the text segment and ends when you invoke an exit system call (system call #10). If you put your routine after an exit system call, a function return, or any other unconditional branch, control never reaches it unless you call it explicitly. For example:

        .data
strproc:.asciiz "procedure example"
strnl:  .ascii "\n"

        .text
        # entry point
        li $v0, 1
        li $a0, 1
        syscall     # print integer 1

        jal println # call println

        li $v0, 10
        syscall     # exit program

printnl:li $v0, 1
        li $a0, 5
        syscall     # print integer 5
        jr $ra      # return from function

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

How do you define constants in the MIPS assembly language?

How to define a cursor later?

How to use a cons cell to define and later remove overlays with `dolist`

How do i use function if i need to define it later?

How can define a new parameter in function and later use it?

How to print the vowels in mips assembly

How to define a Fortran subroutine with arbitrary number of arguments?

MIPS delay subroutine

Using MIPS 32 assembly language, how can I use the addu and ori commands to load and add 4 integers?

TypeScript define object structure for later use

How to translate this sort algorithm to mips assembly

How to initialise a huge array in MIPS assembly?

How to avoid repetitive syscalls and moves in MIPS Assembly?

How to improve this MIPS-Assembly program

I want to define closure variables and use them later, How do I do?

How can I exit main subroutine in ARM assembly?

How to define global variables to be shared later in Julia

How to define a callback function and trigger it later?

How to define an empty, "uninitialized" keypath and set it later?

Why do we use .globl main in MIPS assembly language?

When to use temporary and saved registers in MIPS Assembly language?

How to use one of the outputs of a subroutine as a function?

How to require a file and use its subroutine

How to use fortran module subroutine in c

How to use pointer correctly in MIPS?

How to use MIPS load word

How to store a value for later use?

How does the bounds check shortcut work in assembly (MIPS)?

How to fill an array , print it and sort it with bubble sort MIPS assembly

TOP Ranking

  1. 1

    Failed to listen on localhost:8000 (reason: Cannot assign requested address)

  2. 2

    How to import an asset in swift using Bundle.main.path() in a react-native native module

  3. 3

    Loopback Error: connect ECONNREFUSED 127.0.0.1:3306 (MAMP)

  4. 4

    pump.io port in URL

  5. 5

    Spring Boot JPA PostgreSQL Web App - Internal Authentication Error

  6. 6

    BigQuery - concatenate ignoring NULL

  7. 7

    ngClass error (Can't bind ngClass since it isn't a known property of div) in Angular 11.0.3

  8. 8

    Do Idle Snowflake Connections Use Cloud Services Credits?

  9. 9

    maven-jaxb2-plugin cannot generate classes due to two declarations cause a collision in ObjectFactory class

  10. 10

    Compiler error CS0246 (type or namespace not found) on using Ninject in ASP.NET vNext

  11. 11

    Can't pre-populate phone number and message body in SMS link on iPhones when SMS app is not running in the background

  12. 12

    Generate random UUIDv4 with Elm

  13. 13

    Jquery different data trapped from direct mousedown event and simulation via $(this).trigger('mousedown');

  14. 14

    Is it possible to Redo commits removed by GitHub Desktop's Undo on a Mac?

  15. 15

    flutter: dropdown item programmatically unselect problem

  16. 16

    Change dd-mm-yyyy date format of dataframe date column to yyyy-mm-dd

  17. 17

    EXCEL: Find sum of values in one column with criteria from other column

  18. 18

    Pandas - check if dataframe has negative value in any column

  19. 19

    How to use merge windows unallocated space into Ubuntu using GParted?

  20. 20

    Make a B+ Tree concurrent thread safe

  21. 21

    ggplotly no applicable method for 'plotly_build' applied to an object of class "NULL" if statements

HotTag

Archive