1. 程式人生 > 實用技巧 >利用 QEMU USER 模式執行 mips 程式

利用 QEMU USER 模式執行 mips 程式

摘要

關鍵字: qemu mips

前述

QEMU是一個處理器模擬軟體,可以用來在PC中模擬ARM、MIPS等多種架構的軟硬體執行環境。QEMU主要有兩種模擬模式:

  • User Mode
    System模式中,它可以在一個主機環境中虛擬不同的虛擬計算機系統,比如可以在Ubuntu系統中虛擬出一個MIPS架構的Debian系統。
  • System Mode
    User模式中,它可以執行一個為其他處理器編寫的應用程式,比如可以在X64-Ubuntu系統中直接執行一個MIPS-Linux的應用程式。

QEMU功能強大,現在的版本安裝起來也很簡單。但在Ubuntu版本中,只需要一條命令就可以把QEMU的User模式和System模式的可執行檔案安裝好

apt install qemu-user-static qemu-system-mips

注意這裡我們安裝的是qemu-user模式的static版本,也就是靜態連結的qemu。

QEMU User模式的使用

安裝好qemu命令後,我們可以編譯一個我們自己編寫的mips-linux應用程式並執行起來。在此之前我們需要安裝一個能夠編譯mips應用程式的編譯器,同樣的,使用一條簡單的命令就可以完成

apt install gcc-mips-linux-gnu 

安裝好編譯器以後,我們使用一段helloworld C程式碼測試一下:

root@OptiPlex-7050:/home/lester# cat > xx.c << EOF
#include <stdio.h>
#include <endian.h>

int main()
{
    int x = 0x1234;
    printf("0x%x, htole32 0x%x, htobe32 0x%x\n", x, htole32(x), htobe32(x));
    return 0;
}
EOF

編譯這段程式碼的命令如下:

root@OptiPlex-7050:/home/lester# mips-linux-gnu-gcc -static xx.c
root@OptiPlex-7050:/home/lester# file a.out 
a.out: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), statically linked, for GNU/Linux 3.2.0, BuildID[sha1]=58b4213f431eedcd37b362a38662113d6ff0b7dc, not stripped

從上可以看出,編出來的程式的MIPS的。

然後使用qemu命令執行測試:

root@OptiPlex-7050:/home/lester# qemu-mips-static ./a.out 
0x1234, htole32 0x34120000, htobe32 0x1234