标签: mips

GCC MIPS-32调用约定/堆栈帧定义

对于MIPS-32处理器体系结构,似乎没有明确的标准化堆栈帧和C语言调用约定(寄存器使用等).也就是说,似乎完全取决于汇编器/编译器工具链来定义自己的堆栈帧和调用约定.我很难找到GCC编译器用于MIPS-32指令集的约定的确切参考.我特意在Cygwin上使用GCC交叉编译器,目标是在eCos开源内核的嵌入式环境中使用MIPS-32内核.

任何有关MIPS-32在该领域的GCC权威文件的提及都将受到赞赏.

embedded gcc mips ecos

10
推荐指数
2
解决办法
4733
查看次数

C++ CPU寄存器用法

在C++中,局部变量总是在堆栈上分配.堆栈是应用程序可以占用的允许内存的一部分.该内存保存在RAM中(如果没有换成磁盘).现在,C++编译器是否总是创建在堆栈中存储局部变量的汇编程序代码?

举例来说,以下简单代码:

int foo( int n ) {
   return ++n;
}
Run Code Online (Sandbox Code Playgroud)

在MIPS汇编程序代码中,这可能如下所示:

foo:
addi $v0, $a0, 1
jr $ra
Run Code Online (Sandbox Code Playgroud)

如您所见,我根本不需要使用堆栈.C++编译器会识别出来,并直接使用CPU的寄存器吗?

编辑:哇,非常感谢您几乎立即和广泛的答案!foo的功能主体当然应该是return ++n;,而不是return n++;.:)

c++ compiler-construction assembly mips cpu-registers

10
推荐指数
4
解决办法
3676
查看次数

如何为任天堂64构建一个Hello World?

我正在阅读MIPS汇编语言编程,但现在我想为Nintendo 64构建一个简单的"游戏" .我想Hello, World在屏幕上打印一个,但是有人可以帮忙解决这个问题.因为我没有什么可以开始的.

我选择任天堂64,因为我的朋友告诉我它使用MIPS,我已经有了模拟器.

assembly mips nintendo

10
推荐指数
1
解决办法
3985
查看次数

正则表达式和汇编

我知道8086汇编和学习MIPS汇编.另外,我正在学习正则表达式,然后我想知道:

  • 我如何在它们上使用正则表达式?

regex assembly mips

10
推荐指数
1
解决办法
4923
查看次数

从x86交叉编译MIPS路由器

我的最终目标是为我的旧Actiontec调制解调器/路由器编译无线工具,以便将其配置为无线到以太网桥.目前它的无线功能(看似)由管理大部分Web界面的相同二进制文件控制,但看起来他们使用库无线工具在内部使用至少一些功能.

我以前从未为不同的CPU架构交叉编译,也不确定如何完全识别我需要做的事情.我正在尝试使用uClibc,因为它似乎在系统的其余部分使用,但我不知道如何为调制解调器环境配置buildroot.我根据来自下面的proc的信息最好地猜测了配置应该是什么,但有些错误,因为一个简单的C应用程序只返回0编译后它无法正常运行.

# cat /proc/version 
Linux version 2.4.17_mvl21-malta-mips_fp_le (root@localhost.localdomain) (gcc version 2.95.3 20010315 (release/MontaVista)) #1 Thu Apr 21 18:04:37 PDT 2005
# cat /proc/cpuinfo 
processor               : 0
cpu model               : MIPS 4KEc V4.8
BogoMIPS                : 149.91
wait instruction        : no
microsecond timers      : yes
extra interrupt vector  : yes
hardware watchpoint     : yes
VCED exceptions         : not available
VCEI exceptions         : not available
Run Code Online (Sandbox Code Playgroud)

linux embedded gcc mips uclibc

10
推荐指数
1
解决办法
2万
查看次数

MIPS架构系统调用指令

系统调用指令在MIPS中的作用是什么?

mips mips64 mips32

10
推荐指数
2
解决办法
2万
查看次数

Mips:计算两个输入的总和

看起来很简单,但我认为我的程序不会编译,因为我覆盖了$ v0寄存器?提前致谢

更新:没关系得到它,当我打印系统调用打印总和时我的订单错了...修复以防万一需要参考.

.data
prompt1: .asciiz "\n\n Enter the first integer please:"
prompt2: .asciiz "Enter the second integer please:"
result: .asciiz "The result is:"

.text

main:

    #t0-to hold first integer
    #t1-to hold second integer
    #t2- used to hold the sum of t$1 and t$2

        #first number

    li $v0, 4 #syscall to print string
        la $a0, prompt1  #address of string to print
        syscall

        li $v0, 5 #syscall to read an integer
        syscall
        move $t0, $v0  #move the number to read into …
Run Code Online (Sandbox Code Playgroud)

assembly mips

10
推荐指数
1
解决办法
2万
查看次数

MIPS大于,小于等于,大于等于

给定两个寄存器$s0,$s1如何仅使用slt(在小于时设置)beqbne(如果相等则为分支,如果不相等的分支)指令将以下伪代码转换为MIPS汇编语言.

   if ($s0 > $s1) { goto label1 }
   if ($s0 >= $s1) { goto label2 }
   if ($s0 <= $s1) { go to label3 }
Run Code Online (Sandbox Code Playgroud)

assembly mips

10
推荐指数
1
解决办法
8万
查看次数

MIPS - MIPS如何为堆栈中的数组分配内存?

我对MIPS汇编语言很陌生,目前正在上一个关于MIPS编码的计算机体系结构课程.我以前学过其他几种高级编程语言(C,C#,Python),因此在编程方面有一些基础.

我的问题在这里特别问:MIPS如何为堆栈中的数组分配内存?我希望回答这个问题有望让我更好地理解MIPS,因为我仍然在概念化MIPS语言及其架构的概念.我不太明白指针在这方面是如何工作的......

如果有人可以花时间帮助这个迷茫的学生,那将是辉煌的!:)

malloc assembly mips computer-architecture

10
推荐指数
1
解决办法
2万
查看次数

相同(几乎)ELF头但可执行文件不会在彼此的系统上运行

我正在尝试为我拥有的一个小型嵌入式设备编译几个程序.它是Little-endian MIPS(mipsel)处理器.我通过telnet和内置的ftp客户端从中检索了这个可执行文件:

root@debian-mipsel:/home/user/wansview/devel# readelf -h unzip1 
ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           MIPS R3000
  Version:                           0x1
  Entry point address:               0x401cc0
  Start of program headers:          52 (bytes into file)
  Start of section headers:          169960 (bytes into file)
  Flags:                             0x10001007, noreorder, pic, cpic, o32, mips2
  Size …
Run Code Online (Sandbox Code Playgroud)

c linux embedded mips

10
推荐指数
1
解决办法
1648
查看次数