利用 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
利用 QEMU USER 模式运行 mips 程序的更多相关文章
- 路由器逆向分析------在QEMU MIPS虚拟机上运行MIPS程序(ssh方式)
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/69652258 在QEMU MIPS虚拟机上运行MIPS程序--SSH方式 有关在u ...
- WinServer2008R2 + IIS 7.5 + .NET4.0 经典模式 运行WebAPI程序报404错误的解决方案
在Windows Server 2008 R2系统下,IIS 7.5 + .NET Framework 4.0的运行环境,以经典模式(Classic Mode)部署一个用.NET 4.0编译的 Web ...
- spark学习14(spark local模式运行spark程序的报错)
报错1 java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries. 解 ...
- 在linux下利用nohup来后台运行java程序
nohup java -jar /etc/deny/denyHttp_fat.jar & http://limaoyuan.iteye.com/blog/900928 http://zshou ...
- 大数据入门第八天——MapReduce详解(四)本地模式运行与join实例
一.本地模式调试MR程序 1.准备 参考之前随笔的windows开发说明处:http://www.cnblogs.com/jiangbei/p/8366238.html 2.流程 最重要的是设置Loc ...
- QEMU和Firmadyne基本知识|模拟MIPS程序
QEMU QEMU是纯软件实现的一个虚拟化模拟器,几乎可以模拟任何硬件设备,支持多种架构. QEMU安装命令 sudo apt-get install qemu #user mode,包含qemu-m ...
- 呃,如何使 .NET 程序,在 64位 系统 中,以 32位 模式运行。
其实最简单的方法就是在解决方案中,把平台设为 x86 就好了哈~ 但是今天遇到一个第三方的软件,它调用的一个 dll 是 32位 的,可能它没有测试过在 64位 系统下运行的情况,它在编译时是按默 ...
- 【Exception—WebForm】当应用程序不是以 UserInteractive 模式运行时显示模式对话框或窗体是无效操作。请指定 ServiceNotification 或 DefaultDesktopOnly 样式,以显示服务应用程序发出的通知。
最近做的项目现在发布到服务器上开始测试了,本地好好的程序,到服务器上却报异常了: 当应用程序不是以 UserInteractive 模式运行时显示模式对话框或窗体是无效操作.请指定 ServiceNo ...
- 【node.js】本地模式安装express:'express' 不是内部或外部命令,也不是可运行的程序或批处理文件。
今天闲来无事想起了node.js,因此到网上下载了一个node.js的安装程序进行安装.其中: 安装程序:node-v0.11.13-x64.msi PC系统:Windows 7 自定义安装路径:D: ...
随机推荐
- Dbeaver连接Hive和Mysql的配置
1.连接Hive 首选需要配置Hive 这里我们采用的是JDBC的连接方式 (1) 在Hive中后台启动hiveserver2 [root@hadoop-101 hive]# bin/hiveserv ...
- openvswitch 监听端口变化
命令: ovsdb-client monitor Interface name,ofport,external_ids --format=json 运行效果: [root@ostack1 ~]# ov ...
- SpringBoot项目 使用Jenkins进行自动化部署 gitlab打tag 生产测试环境使用 含配置中心
脚本 node('master') { def mvnHome = tool 'maven11-free' def gitUrl = "http://gitlab.wdcloud.cc:10 ...
- 计算机网络-网络层(2)NAT协议
网络地址转换(NAT,Network Address Translation)协议: 本地网络内通信的IP数据报的源与目的IP地址均在子网10.0.0.0/24内:所有离开本地网络去往Internet ...
- Vue路由模块化的实现方法
分享一个Vue路由模块化方法,简单实用,好用到飞起 路由模块化 1.router/index.js 配置路由 import Vue from 'vue' import VueRouter from ' ...
- js大数字转换,将大额数字转换为万、千万、亿等
代码 /** * 大数字转换,将大额数字转换为万.千万.亿等 * @param value 数字值 */ export function bigNumberTransform (value) { co ...
- python - Lambda函数 匿名函数
Lambda 匿名函数 python 使用 lambda 来创建匿名函数. lambda只是一个表达式,函数体比def简单很多. lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda ...
- 2020重新出发,MySql基础,MySql数据库备份与恢复
@ 目录 MySQL数据库备份与恢复 数据库为什么需要备份 MySQL备份类型 MySQL热备份及恢复 逻辑备份 mysqldump SELECT INTO-OUTFILE mydumper 裸文件备 ...
- 使用【QQ五笔的码表】转成【百度手机自定义码表】
使用[QQ五笔码表]转成[百度手机自定义码表] QQ五笔码表先转成多多格式. 这里选用极点>>多多. 然后去掉空格. 转成GB.去掉没的字. 百度要的是这种格式. 现再用点讯工具转成 de ...
- Illegal instruction报错 c/c++
报错 # ./agent Illegal instruction# 原因 myLog(log4cplus::INFO_LOG_LEVEL, g_p_debugLog, "sendLog ip ...