MIPSはこの先生きのこれる事が出来るか [無断転載禁止]©2ch.net
90年代後半にゲーム機で席巻するも00年代後半に猛烈なARMの巻き返しを受け
風前の灯のMIPSアーキテクチャを語るスレ ))())(()))))(())()((((()))()(())(((((()))()()))()))()())(((()((()))))(()((((
()())()(()())((()(((((((())))))))()))))))))(()(()()()(()(((()()(())))(((())(
(((()))))))())())()(((()())())())((((()))))(()((())(()()())(()))(()))((((()(
)())))(()))()(())(()))(((())())(())())()((())())(((()())(())((()(()(()((()))
)))())(()(())(()((()())((()(((()()()())(((()())))))))))()((())())(()((()))((
)())())(())(((((()()()))))))()((())()()()(()((())()()))))()))(()(()(((((())(
)()(()()()())(()((((()(())())())))()()()()()((())())())(())()))(()))()(((()(
((()))())(()()())(((()(())(()((()))(())(())()))()))(()(()(()))())())()(((())
((()())())((()(()))))))))(()()((())()(()())))())(((((())())(((((((()()()))))
()(()))(((()))())())(()))((())()(()()()()))))())))(((()(((((()))((()(()))()(
((())))))(()()))))((()()()(((()(()()))()())(()))()((((())(()())()((())()(())
)()(()())(()(()((()()))))()())())((((()()((()()()())))))(()()())((()()((()))
((())(()(((())(()(())))()))(((())())))())()()()))()(()(()))((()))())(((()()(
((()()()())))(((())()()(()()((((())(()()))((())))(())))))))())()()((((((()))
()())(()())()()((((((((()(())(()())))(())()()))((())(()())()(())))())()()())
(())())(()))(((()())())(((()()()(())))((()))())(())))((()))()()(()((()))(()(
)())))))))()()(()(((()))()))))((()))((())(()()(()))(()(()()((((()()(()(())((
))()(())(())(())(((())))))))))()))(((((()())))((())))(()(()(((())((()((()()(
))(())()))())(())())))())(()(())))())((((((()()(((((())()(()()(()(())))(()()
))(((())))())(()()(((())()))()))(((()()))((())(())(())(())(())((()()((()()))
()))()()))(()(()))()(())((((()()(())))))())(())((()())))())((()()()(((())(((
()(((()())()())())()((()()(()()(()()))))(()())()()))()())((()(((()()()()))()
((()))))))((()())((()(())(()()))(()())((()))))())(((()()()()()(((()()(()))()
)())((())(()))()()(())())(()))()()))(((()(())(((())((()))(()()))()((((()()))
())))()())(())(())(())))())()(()()(((()()(()(()())(((()((())())()(()()(())))
(()))))))(())())(())(()())())()())()()()(()())((((())()(()())()(((())(((())(
()))()()))((()))))))())(((()(()()())(((()(()((())))))(()(((()()()())))((()((
()()()()()))))()()())(((())(())())()))((())())())(()())((())()((())(((())(((
()(()()))))()()()(((((()()))())())((())))))((()))()))()(()))(()(((())(()((((
)(()()()((())))((((((())()()()()(()))(()((()())())()()())))(((((()))))())())
)))(())(()((()((()((()(((()(()())))(()))))))()(()())())(()()(()())())))((()(
((()((((((()()()(()())))())(())(()))((()())()((())))))()((()))()(()))))(())(
)()())()()((()(()()))()))))(()()())()))))()((()))((()())(())()(((()())((((((
()()())((())())(((())))(()(()(())))()()())()(())(((()((()()))))(())))()()(((
((()))((()()))))())))((()))()()()(((((())()))(())()(((((())((()(())(()()))))
()()(())()(()()(()())(())())())()(()))())(((())(())))()()()()(()((()()))()((
())((()()()())()(())((()())()(()))()(()()()))(()))())()(()(((())((((())())))
()()()(()()((()(())())())()())()((())()()()()())((()()))()(()(()(()))(()()))
())())()())())((((((()((())()(()())))))()())(()))())()()()(()(())))(((())(((
(()()))((())(())())))))(()()()())(()((((())(()())()())))))(())((()(()()()(((
())())(()(()()((((())())((()((((())()())))))((()))))))(((())()())(()(()())()
))()()))((((()()())())(((()()(()())))((((())((()))(()(()())))()())((()())())
)()(()))))()()))(()))())(((())((()())))()()())(()()()))))((((()((()(())(((((
(())(())))(()))())((()))))(())((())((()(())()())()(())))()()()()((((()((())(
(())()))()(())((()()())(()())())())(()(())(()()(()))(())()((((()()()())))(()
)())()()((())))())))(()()))((()(()((())(((((((()(((()())())((())()))()()))))
)()()))(((())(()()((())()))(()()(()(())((()((((()))))((()((()())))))()(())))
))()()()(((((()((()))()()()())()())))))))()()()(())))))(((()))(((((()(())(((
)))()()(())))(())))))((((()()))))))(()(((()())()(()(()))()((((())((((()()()(
(())))))((()))()())((()(((())(()())(()))(()()))()((()()()()((()(())(()())))( 安物ルーターはまだMIPSだろ。onion-omegaもMIPSだ ARMはオプソないけど
MIPSはあったような希ガス
あるいは来世巣やすいとか >>6
PIC32もMIPS
小規模な構成ならMIPS の方がシンプルで向いてると思う。 >>8
秋月のPIC32MXのページだが、どのPIC32MXも
AAAのマークが付いてる
秋月では人気商品の一つなのだろうな
http://akizukidenshi.com/catalog/c/cpic32/ PIC32MXはM4Kコア
PIC32MZ、PIC32MMはmicroAptivコアでMIPS32の他にmicroMIPS命令にも対応
PIC32MZ EFはM5150コアでFPU付きでMIPS32の他にmicroMIPS命令にも対応
microMIPSは16bit長の命令と32bit長の命令混在の命令セットでコード密度が高いのが特徴 MIPS、新プロセッサコア「Aptiv」ファミリーを発表
http://pc.watch.impress.co.jp/docs/news/535532.html
M-Class M51xxコアファミリ
http://jp.imgtec.com/mips/warrior/mclass.asp
Imagination、初のMIPS Series 5プロセッサ“Warrior”を製品化
http://pc.watch.impress.co.jp/docs/news/619415.html
Imagination、6コア/24スレッド対応の64bit MIPS CPU
http://pc.watch.impress.co.jp/docs/news/665222.html
イマジネーション・テクノロジーズ、MIPS製品ファミリの新製品「M6200、M6250、P6600」を発表
高性能組み込みアプリケーション向け32ビットCPUと、
最上位の64ビット・プロセッサを追加し、さらに充実したCPU IPポートフォリオへ
http://jp.imgtec.com/news/detail.asp?ID=636 Cavium Networks、最大32コアとなるOCTEON IIを発表
http://news.mynavi.jp/news/2010/05/19/008/
64ビットMIPSアーキテクチャが、Caviumの新OCTEONR IIIプロセッサで低消費電力・高スループット処理を実現
http://jp.imgtec.com/news/detail.asp?ID=625 >>9
基準が秋月www
趣味の電子工作で売れる分なんて誤差だよ >>14
Microchip社、8ビットマイクロコントローラの 売り上げランキングで再びトップに
http://news.infoseek.co.jp/article/dreamnews_0000111737/
>また、32ビットMCUでは42.3%の成長を達成し、
>32ビットMCUサプライヤ トップ10入りを果たしました。 他のメーカーは16bitに移ってるから
トップ10てwww
つまりダメダメってことだ ルネサスはRL78に統合したからな
PICの8bitとじゃパフォーマンスは大違い >>19
作っているところを見ると趣味で収まらない用途があるんだろうね。
片面基板にフロー半田で32ビットってどれぐらいの用途があるんだろう。
モーター制御あたりなのかな。 他のメーカーが作ってないんで、ごく限られた用途しかないのは確か 低密度の安い基板を使う用途だろうけど、大型家電とか? デンソーはMIPSで行くらしい
デンソーはトヨタのグループ企業でルネサスの大株主の中の一社でルネサスの顧客企業の一つでもある
日本電産がルネサスを買収しようとしたのをトヨタと一緒に横槍を入れて止めさせたくらいの影響力はある
モノが出てないのでまだどうなるかわからないけど
デンソー、自動運転に向けたCPUのマルチスレッド技術で英企業と共同研究
https://japan.cnet.com/article/35092144/
デンソーが自動運転でMIPSコアを選んだ理由
http://techon.nikkeibp.co.jp/atcl/news/16/110704910/?rt=nocnt MIPS Release 6はCodescape MIPS SDK Essentialsで試せる
Codescape MIPS SDK Essentialsといってもgcc、g++、gfortran
それとqemuも付いてるからコンパイルしたプログラムをqemu上で実行することも可能
Download Codescape MIPS SDK Essentials
https://community.imgtec.com/developers/mips/tools/codescape-mips-sdk/download-codescape-mips-sdk-essentials/
Codescape GNU Tools for MIPS IMGはMIPS Release 6用
Codescape GNU Tools for MIPS MTIはMIPS Release 5とそれ以前用
LinuxでのCodescapeのインストールの仕方は
http://codescape-mips-sdk.imgtec.com/installer/essentials/release/CodescapeMIPSSDK-1.4.1.07/CodescapeMIPSSDK-1.4.1.07-linux-x64-installer.run
をダウンロードして
chmod u+x CodescapeMIPSSDK-1.4.1.07-linux-x64-installer.run
sudo ./CodescapeMIPSSDK-1.4.1.07-linux-x64-installer.run
これでインストーラーが走る
コンパイル方法
export PATH=/opt/imgtec/Toolchains/mips-img-linux-gnu/2016.05-03/bin:$PATH
mips-img-linux-gnu-gcc -EL -march=mips64r6 -mabi=64 -O2 -o hogehoge hogehoge.c
mips-img-linux-gnu-g++ -EL -march=mips64r6 -mabi=64 -O2 -o hogehoge hogehoge.cpp
mips-img-linux-gnu-gfortran -EL -march=mips64r6 -mabi=64 -O2 -o hogehoge hogehoge.f
注意:-ELはリトルエンディアンの指定、ビッグエンディアンなら-EB
qemuでの実行方法
こんな感じのシェルスクリプトを書いて実行
qemu-mips64el.sh
#!/bin/bash
export LD_LIBRARY_PATH=/opt/imgtec/Toolchains/mips-img-linux-gnu/2016.05-03/mips-img-linux-gnu/lib/mipsel-r6-hard/lib64
/opt/imgtec/Simulators/qemu/2.5.0.2.0/bin/qemu-mips64el -cpu MIPS64R6-generic -L /opt/imgtec/Toolchains/mips-img-linux-gnu/2016.05-03/sysroot/mipsel-r6-hard $1
注意:ビッグエンディアンならqemu-mips64を使用する
実行権の付加
chmod u+x qemu-mips64el.sh
実行
./qemu-mips64el.sh hogehoge
32bitなら
コンパイル
export PATH=/opt/imgtec/Toolchains/mips-img-linux-gnu/2016.05-03/bin:$PATH
mips-img-linux-gnu-gcc -EL -march=mips32r6 -mabi=32 -O2 -o hogehoge hogehoge.c
mips-img-linux-gnu-g++ -EL -march=mips32r6 -mabi=32 -O2 -o hogehoge hogehoge.cpp
mips-img-linux-gnu-gfortran -EL -march=mips64r6 -mabi=32 -O2 -o hogehoge hogehoge.f
qemu-mipsel.sh
#!/bin/bash
export LD_LIBRARY_PATH=/opt/imgtec/Toolchains/mips-img-linux-gnu/2016.05-03/mips-img-linux-gnu/lib/mipsel-r6-hard/lib
/opt/imgtec/Simulators/qemu/2.5.0.2.0/bin/qemu-mipsel -cpu mips32r6-generic -L /opt/imgtec/Toolchains/mips-img-linux-gnu/2016.05-03/sysroot/mipsel-r6-hard $1 MIPS Relase2の場合
コンパイル方法
export PATH=/opt/imgtec/Toolchains/mips-mti-linux-gnu/2016.05-03/bin:$PATH
mips-mti-linux-gnu-gcc -EL -march=mips64r2 -mabi=64 -O2 -o hogehoge hogehoge.c
mips-mti-linux-gnu-g++ -EL -march=mips64r2 -mabi=64 -O2 -o hogehoge hogehoge.cpp
mips-mti-linux-gnu-gfortran -EL -march=mips64r2 -mabi=64 -O2 -o hogehoge hogehoge.f
注意:-ELはリトルエンディアンの指定、ビッグエンディアンなら-EB
qemuでの実行方法
こんな感じのシェルスクリプトを書いて実行
qemu-mips64el.sh
#!/bin/bash
export LD_LIBRARY_PATH=/opt/imgtec/Toolchains/mips-mti-linux-gnu/2016.05-03/mips-mti-linux-gnu/lib/mipsel-r2-hard/lib64
/opt/imgtec/Simulators/qemu/2.5.0.2.0/bin/qemu-mips64el -cpu MIPS64R2-generic -L /opt/imgtec/Toolchains/mips-mti-linux-gnu/2016.05-03/sysroot/mipsel-r2-hard $1
注意:ビッグエンディアンならqemu-mips64を使い、ライブラリ指定のmipsel-r2-hardのところをmips-r2-hardに変更
実行権の付加
chmod u+x qemu-mips64el.sh
実行
./qemu-mips64el.sh hogehoge
32bitなら
コンパイル
export PATH=/opt/imgtec/Toolchains/mips-mti-linux-gnu/2016.05-03/bin:$PATH
mips-mti-linux-gnu-gcc -EL -march=mips32r2 -mabi=32 -O2 -o hogehoge hogehoge.c
mips-mti-linux-gnu-g++ -EL -march=mips32r2 -mabi=32 -O2 -o hogehoge hogehoge.cpp
mips-mti-linux-gnu-gfortran -EL -march=mips64r2 -mabi=32 -O2 -o hogehoge hogehoge.f
qemu-mipsel.sh
#!/bin/bash
export LD_LIBRARY_PATH=/opt/imgtec/Toolchains/mips-mti-linux-gnu/2016.05-03/mips-mti-linux-gnu/lib/mipsel-r2-hard/lib
/opt/imgtec/Simulators/qemu/2.5.0.2.0/bin/qemu-mipsel -cpu 24Kf -L /opt/imgtec/Toolchains/mips-mti-linux-gnu/2016.05-03/sysroot/mipsel-r2-hard $1
補足:最新の命令を試したければ24KfのところをP5600に変更
microMIPSを試したければ24Kfのところをm14kcを指定(ライブラリの指定はmipsel-r2-hardのところをmicromipsel-r2-softに変更)
コンパイル時に-mmicromips -msoft-floatの指定を追加する(m14kcはFPUを持ってないのでsoft-floatにしないとエラーになる)
/opt/imgtec/Simulators/qemu/2.5.0.2.0/bin/qemu-mipsel -cpu ?
こうするとQEMUが対応してるCPUの一覧が表示される ちなみにCodescape MIPS SDK Essentialsは全部入れると8GBくらいになります アセンブラソースとリスティングファイルも出したいときはこんな感じ
mips64r6の場合
mips-img-linux-gnu-gcc -EL -march=mips64r6 -mabi=64 -O2 -S -o hogehoge.s hogehoge.c
mips-img-linux-gnu-as -a=hogehoge.lst -EL -march=mips64r6 -mabi=64 -o hogehoge.o hogehoge.s
mips-img-linux-gnu-gcc -EL -march=mips64r6 -mabi=64 -o hogehoge hogehoge.o
mips32r6の場合
mips-img-linux-gnu-gcc -EL -march=mips32r6 -mabi=32 -S -o hogehoge.s hogehoge.c
mips-img-linux-gnu-as -a=hogehoge.lst -EL -march=mips32r6 -mabi=32 -o hogehoge.o hogehoge.s
mips-img-linux-gnu-gcc -EL -march=mips32r6 -mabi=32 -o hogehoge hogehoge.o
mips64r2の場合
mips-mti-linux-gnu-gcc -EL -march=mips64r2 -mabi=64 -O2 -S -o hogehoge.s hogehoge.c
mips-mti-linux-gnu-as -a=hogehoge.lst -EL -march=mips64r2 -mabi=64 -o hogehoge.o hogehoge.s
mips-mti-linux-gnu-gcc -EL -march=mips64r2 -mabi=64 -o hogehoge hogehoge.o
mips32r2の場合
mips-mti-linux-gnu-gcc -EL -march=mips32r2 -mabi=32 -S -o hogehoge.s hogehoge.c
mips-mti-linux-gnu-as -a=hogehoge.lst -EL -march=mips32r2 -mabi=32 -o hogehoge.o hogehoge.s
mips-mti-linux-gnu-gcc -EL -march=mips32r2 -mabi=32 -o hogehoge hogehoge.o ちなみに上記方法でQEMUで実行できるのはLinuxのみです
Windows版のCodescape MIPS SDK EssentialsはMIPSのLinuxで実行できるプログラムは作成できますが
WindowsではQEMUのユーザモードは使えません 補足
Ubuntuの16.04のapt-get installで入れたqemuでも動作するが
mips32r6の場合、ダイナミックリンクライブラリが正常に読み込まれなくて実行できなかった
mips64r6、mips64r2、mips32r2は正常に実行できた
Ubuntu16.04のapt-get installで入れたgcc-mipsel-linux-gnuやgcc-mips-linux-gnuでは
mips32r6やmips64r6のコンパイルはできない
MIPS Release 6のコンパイルには上記のようにCodescape MIPS SDK Essentialsを使うべき Creator Ci20 Linux/Android Computer Bd
http://jp.rs-online.com/web/p/processor-microcontroller-development-kits/1253305/
¥11,208(税抜き)
単価: 購入単位は1個
MIPSアーキテクチャーCPUとグラフィックボードで3Dゲームもそのまま動く高性能
KitKatも動くハイスペックシングルボードコンピューター、出荷開始
http://ascii.jp/elem/000/000/975/975289/
高性能開発ボード「MIPS Creator CI20」を使ってみた--「Raspberry Pi」への新たな挑戦者
https://japan.cnet.com/article/35058718/
Creator Ci20ボードの仕様
MIPS CPU
Ingenic JZ4780 SoC
MIPSベースのXBurst 1.2 GHz CPU x 2
GPU
PowerVR SGX540 GPU
最大1080pビデオに対応
メモリ
1 GB DDR3 SDRAM
マルチメディア
HDMIポート
カメラインターフェイス
オーディオI/O
IO拡張
拡張ヘッダ、赤外線
Raspberry Pi B I/O
保管場所
8 GB NANDフラッシュ
接続
イーサネットポート x 1
802.11 n
Bluetooth 4.0 Creator Ci40 IoT Kit with Clicker Boards
http://jp.rs-online.com/web/p/processor-microcontroller-development-kits/1253307/
¥24,698(税抜き)
単価: 購入単位は1個
Creator Ci40 IoTキットの内容
Creator Ci40開発ボード(RS 125-3306)
MikroElektronika 6LoWPANクリッカボード x 2
MikroElektronikaクリックボード x 3 (Relay Click (RS 820-9858)、Motion Click (RS 882-9008)、Thermo3 Click (RS 923-6012)
マイクロUSBケーブル x 1
Ci40スタンドオフマウント x 4
オプションでmikroProg又はPICkitデバッガをクリッカボードに接続するための5ピンヘッダ x 2
Creator Ci40開発ボード
Imagination TechnologiesのCreator Ci40ボードは、
IoT用途向けに、高性能・低電力のマイクロコントローラに最適化されています。
クロック周波数550 MHzのデュアルコア、デュアルスレッドのMIPS CPUを搭載するcXT200 SoCを使用しています。
Ensigma接続エンジンにより、超高速WiFiと低電力Bluetoothによる接続が可能です。
Creator Ci40は、OpenWrt、Debian、Brillo (GoogleのIoTに最適化された新オペレーティングシステム)など、
幅広いGNU/Linuxディストリビューションに対応しています。
このボードは、多くの既存のRaspberry Pi HAT及びMikroBus クリックに対応しており、
コンセプトをすばやくプロトタイプに進めることができます。
MIPS CPU
550 MHzデュアルコア、デュアルスレッドinterAptiv
32/32 KB L1キャッシュ x 2
512 KB L2キャッシュ x 1
浮動小数点演算ユニット
OpenWRT Linux OS
IO拡張
MikroElektronikaクリックインターフェイス x 2
Raspberry Piインターフェイス x 1 (40ピンヘッダ)
接続
802.11 AC 2 x 2 WiFi
802.15.4 6LoWPAN
Bluetooth (LE及びクラシック)
RJ45イーサネットポート x 1
1 x USB
セキュリティ
TPMチップ
メモリ
2 MBブートNORフラッシュ
512 MB NANDフラッシュ
256 MB DDR3 SDRAM
SDカードスロット 32bit MIPSだとしても昔のIndyより高性能なのか… Halley IoT Module
http://shimafuji.co.jp/HalleyIoTModule/index.html
http://www.ingenic.com/~editor/eweditor/uploadfile/20130116103727965.png
・ Powered by Ingenic M150, up to 1.0GHz, embedded 128MB LPDDR
・ Support Wi-Fi IEEE 802.11 b/g/n
・ Support Bluetooth 4.1
・ External interfaces to LCD, audio, SD card, USB, UART, I2C, SPI, ADC, PWM, GPIO etc.
・ Support 8MB SPI Flash
・ Open source Linux 3.10 operating system
Ingenic M150
http://www.ingenic.com/en/?product/id/12.html
http://www.ingenic.com/en/~editor/eweditor/uploadfile/20160612093224514.png
CPU
XBurst core, 1.0GHz (MIPS-based). 32KB L1 cache, 256KB L2 cache.
GPU
X2D: Resizing, Rotating, Mirror, Color Convention and OSD etc.
VPU
Video encoder: H.264, D1@30fps.
Video decoder: H.264, MPEG-1/2/4, VC-1, VP8, RV9, 720P@30fps.
Memory
On-chip 128MB LPDDR, up to 320Mbps.
64-bit ECC NAND flash, 512B/2KB/4KB/8KB/16KB page size.
Conventional and toggle NAND flash.
XBurst CPU
http://www.ingenic.com/en/?xburst.html
XBurst CPU Specification:
Architecture
MIPS32 Release 2
XBurst SIMD
Pipeline
9-stage, single issue
Dhrystone
2.0 DMIPS/MHz
MMU
32 dual-entry full associative joint TLB
4 entry ITLB
4 entry DTLB
Cache
32KB/64KB L1 cache
256KB/512KB L2 cache
Debug
EJTAG
Process
0.18um, 90nm, 65nm, 40nm
Performance andPower consumption
(1.0GHz, 0.09mW/MHz) @65nmLP
(1.2GHz, 0.07mW/MHz) @40nmLP, performance optimized
(500MHz, 0.05mW/MHz) @40nmLP, power optimized かといってPIC32がMIPSの代表みたいに言われるのも違うと感じる 繰り返し書いて何か宣伝なのか?
安いのほしいならLinkIt Smart 7688 DuoなりOmega2なりを
買えば良い話だよな 懐かしい名前が
10年以上前の中国公安版OLPCプロジェクトの時からここはMIPS押しだったな
まだやってたのか
ただ、バイナリ変換なんて歴史的に上手くいった例がないからなー
Crusoe&Efficeonを思い出してしまう
どうせ性能出ないのなら、
MacのPPC→x86のRosetta
みたいに完全ソフト実装のほうが色々融通利きそうに思う x86_64のUbuntu 16.04および16.10でMIPS32R2クロスコンパイル環境を構築
注:mips32r6やIEEE754R-2008を使う場合はこの方法ではできません
>>26,>>27の方法でやってください
$ sudo apt-get install qemu
$ sudo apt-get install g++-mipsel-linux-gnu
これで終わり
コンパイル方法
$ mipsel-linux-gnu-gcc -o test01 test01.c
数学ライブラリを使った場合は
$ mipsel-linux-gnu-gcc -o test01 test01.c -lm
アセンブル方法(アセンブルソースはtest01.s)
$ mipsel-linux-gnu-as -a=test01.lst -o test01.o test01.s
$ mipsel-linux-gnu-ld -o test01 test01.o
gccでアセンブルソースを出力させてアセンブルする方法
$ mipsel-linux-gnu-gcc -S -o test01.s test01.c
$ mipsel-linux-gnu-as -a=test01.lst -o test01.o test01.s
$ mipsel-linux-gnu-gcc -o test01 test01.o
qemuでの実行方法
$ qemu-mipsel -cpu 24kf -L /usr/mipsel-linux-gnu test01
これを実行すれば直接コマンドラインから実行できるようになる
export QEMU_LD_PREFIX=/usr/mipsel-linux-gnu x86_64のUbuntu 16.04および16.10でMIPS64R2クロスコンパイル環境を構築
注:mips64r6やIEEE754R-2008を使う場合はこの方法ではできません
>>26,>>27の方法でやってください
$ sudo apt-get install qemu
$ sudo apt-get install g++-mips64el-linux-gnuabi64
これで終わり
コンパイル方法
$ mips64el-linux-gnuabi64-gcc -o test01 test01.c
数学ライブラリを使った場合は
$ mips64el-linux-gnuabi64-gcc -o test01 test01.c -lm
アセンブル方法(アセンブルソースはtest01.s)
$ mips64el-linux-gnuabi64-as -a=test01.lst -o test01.o test01.s
$ mips64el-linux-gnuabi64-ld -o test01 test01.o
gccでアセンブルソースを出力させてアセンブルする方法
$ mips64el-linux-gnuabi64-gcc -S -o test01.s test01.c
$ mips64el-linux-gnuabi64-as -a=test01.lst -o test01.o test01.s
$ mips64el-linux-gnuabi64-gcc -o test01 test01.o
qemuでの実行方法
$ qemu-mips64el -cpu MIPS64R2-generic -L /usr/mips64el-linux-gnuabi64 test01
これを実行すれば直接コマンドラインから実行できるようになる
export QEMU_LD_PREFIX=/usr/mips64el-linux-gnuabi64 QEMUが対応してるCPUの種類はこれで調べられる
$ qemu-mipsel -cpu ?
$ qemu-mips64el -cpu ? MIPSの%hi()や%lo()は癖があるね
%hi(value01)
32bitの値の上位16bitを取り出す
%lo(value01)
32bitの値の下位16bitを取り出す
ここで注意が必要なのは
・value01の15bit目が1の場合、
%hi(value01)の値はvalue01の上位16bitの値に1を加えたものになる
このように使うことで$4にvalue01の正しい値が入る模様
lui $4, %hi(value01)
addiu $4, $4, %lo(value01)
addiu $4, $4, imm16はimm16が符号拡張されて$4に加算されるので
そのための%hi()の値が調整されてる模様
なぜかMIPSは符号拡張が好きみたい 64bitの場合は
%highest(value01)
64bitの値のbit48からbit63までの16bitを取り出す
%higher(value01)
64bitの値のbit32からbit47までの16bitを取り出す
%hi(value01)
64bitの値のbit16からbit31までの16bitを取り出す
%lo(value01)
64bitの値のbit0からbit15までの16bitを取り出す
ここでも注意が必要で
・value01の47bit目が1の場合、
%highest(value01)はvalue01のbit48-63の16bit値に1を加えたものになる
・value01の31bit目が1の場合、
%higher(value01)はvalue01のbit32-47の16bit値に1を加えたものになる
・value01の15bit目が1の場合、
%hi(value01)はvalue01のbit16-31の16bit値に1を加えたものになる
64bitイミディエイトのロードは下記のようになる模様
lui $4, %highest(value01)
daddiu $4, $4, %higher(value01)
dsll $4, $4, 16
daddiu $4, $4, %hi(value01)
dsll $4, $4, 16
daddiu $4, $4, %lo(value01)