初心者OK!質問大歓迎!のアセンブラのスレッドです。
基本情報の勉強中の人、PICやH8を勉強中の学生などなど…
前スレ
アセンブラ初心者スレッド
http://echo.2ch.net/test/read.cgi/tech/1314502612/
関連スレ
アセンブラ 13
http://echo.2ch.net/test/read.cgi/tech/1314512680/
探検
アセンブラ初心者スレッド 2©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/04/13(木) 17:35:55.70ID:1WMn3pSz
539529
2019/11/23(土) 11:50:40.96ID:U8iKLMmJ 自己訂正です。
実は、色々と間違いがあり、次のようになっています:
>>529 : 間違い。
530 : 正しい。
531 : 正しい。
>>532 の前半 : 正しい。
>>532 の後半 : 間違い。
改めて、>>529 の根本的な間違いとして、carry flag は、演算前の最上位ビットだけでは決まる、
というのが大間違いでした。下位ビットからの桁上がりがあるためです。
まとめると、x, y が符号なし整数の場合、
1. a = x - y に対する carry flag :
cf = (x < y);
または。
cf = (a > x);
2. a = x + y に対する carry flag :
cf = (x < (-y));
または。
cf = (a < x);
です。上記の「または」以後のやり方は、>>536 537 538 で思い出させていただきました。
一年ほど前に見たやり方がそれだったと思います。とてもエレガントですね。
実は、色々と間違いがあり、次のようになっています:
>>529 : 間違い。
530 : 正しい。
531 : 正しい。
>>532 の前半 : 正しい。
>>532 の後半 : 間違い。
改めて、>>529 の根本的な間違いとして、carry flag は、演算前の最上位ビットだけでは決まる、
というのが大間違いでした。下位ビットからの桁上がりがあるためです。
まとめると、x, y が符号なし整数の場合、
1. a = x - y に対する carry flag :
cf = (x < y);
または。
cf = (a > x);
2. a = x + y に対する carry flag :
cf = (x < (-y));
または。
cf = (a < x);
です。上記の「または」以後のやり方は、>>536 537 538 で思い出させていただきました。
一年ほど前に見たやり方がそれだったと思います。とてもエレガントですね。
540デフォルトの名無しさん
2019/11/25(月) 14:32:25.64ID:1+9AnSdf MIPS64やRISC-VのRV64Iで128bit加算減算のアセンブラ出力してみると
おなじようなことやってるね
mips64 128bit加算 $4:$2 ← $5:$4 + $7:$6
daddu $2,$4,$6
sltu $8,$2,$4
dext $8,$8,0,32
daddu $3,$5,$7
daddu $4,$8,$3
mips64 128bit減算 $4:$2 ← $5:$4 - $7:$6
dsubu $2,$4,$6
sltu $8,$4,$2
dext $8,$8,0,32
dsubu $3,$5,$7
dsubu $4,$3,$8
risc-v RV64I 128bit加算 a6:a7 ← a1:a0 + a3:a2
add a7,a0,a2
sltu a6,a7,a0
add t1,a1,a3
add a6,a6,t1
risc-v RV64I 128bit減算 a1:a2 ← a1:a0 - a3:a2
sub a2,a0,a2
sgtu a0,a2,a0
sub a1,a1,a3
sub a1,a1,a0
おなじようなことやってるね
mips64 128bit加算 $4:$2 ← $5:$4 + $7:$6
daddu $2,$4,$6
sltu $8,$2,$4
dext $8,$8,0,32
daddu $3,$5,$7
daddu $4,$8,$3
mips64 128bit減算 $4:$2 ← $5:$4 - $7:$6
dsubu $2,$4,$6
sltu $8,$4,$2
dext $8,$8,0,32
dsubu $3,$5,$7
dsubu $4,$3,$8
risc-v RV64I 128bit加算 a6:a7 ← a1:a0 + a3:a2
add a7,a0,a2
sltu a6,a7,a0
add t1,a1,a3
add a6,a6,t1
risc-v RV64I 128bit減算 a1:a2 ← a1:a0 - a3:a2
sub a2,a0,a2
sgtu a0,a2,a0
sub a1,a1,a3
sub a1,a1,a0
541デフォルトの名無しさん
2019/11/25(月) 18:08:28.75ID:FcoOoav6 だろうね
542デフォルトの名無しさん
2019/11/28(木) 08:12:36.09ID:xy0IaHJE543デフォルトの名無しさん
2019/11/28(木) 08:14:06.75ID:xy0IaHJE MIPS以降の多くのRISCベースのCPUはすべてキャリーフラグがある。
とても効率的で不可欠だからだ。
とても効率的で不可欠だからだ。
544デフォルトの名無しさん
2019/11/28(木) 19:38:36.20ID:jGkkl6Qu545デフォルトの名無しさん
2019/11/28(木) 19:56:47.34ID:PoPpbfsh フラグはアウトオブオーダーの妨げになるし
並列化も出来ないから
高速化に対してはイマイチ
並列化も出来ないから
高速化に対してはイマイチ
546デフォルトの名無しさん
2019/11/28(木) 20:01:39.23ID:aqT8+si8547デフォルトの名無しさん
2019/11/28(木) 20:15:33.90ID:jGkkl6Qu >>546
それって一々フラグを意識しないだろ。
それって一々フラグを意識しないだろ。
548デフォルトの名無しさん
2019/11/28(木) 20:34:30.59ID:d3vL2dOV 話にならねえな
549デフォルトの名無しさん
2019/11/28(木) 21:08:35.99ID:jGkkl6Qu じゃあ止めよう
550デフォルトの名無しさん
2019/11/28(木) 21:56:14.84ID:aqT8+si8 jbという条件ジャンプ命令は使っているけど
jcという条件ジャンプ命令は使っていないので、キャリーフラグを使うことはない
アホくさ
jcという条件ジャンプ命令は使っていないので、キャリーフラグを使うことはない
アホくさ
551デフォルトの名無しさん
2019/11/28(木) 23:10:51.33ID:xy0IaHJE552デフォルトの名無しさん
2019/11/29(金) 01:09:48.76ID:IDh/GqUP 条件分岐でキャリーフラグの使い方が分からない、使ったことがない、使われることを知らなかった、という人はなんだろう。
6502、Z80、6809、AVR、8086、68K、ARMとメジャーなCPUどれから始めてもマニュアル、入門書には書いてると思う。
6502、Z80、6809、AVR、8086、68K、ARMとメジャーなCPUどれから始めてもマニュアル、入門書には書いてると思う。
553デフォルトの名無しさん
2019/11/29(金) 14:38:26.36ID:I3FFiKl3 JA、JB命令などは普通に使ってもJCを使うことはあまりない
554デフォルトの名無しさん
2019/11/29(金) 15:12:01.44ID:YkvT9y9m >>551
x86なんかキャリーフラグじゃない別のフラグを使った加算とか
歪んだ方向に行ってる
SIMDによる並列化プログラムも
フラグは単なるループ条件くらいにしか使わん
maskレジスタがその役目を継ぐ
x86なんかキャリーフラグじゃない別のフラグを使った加算とか
歪んだ方向に行ってる
SIMDによる並列化プログラムも
フラグは単なるループ条件くらいにしか使わん
maskレジスタがその役目を継ぐ
555デフォルトの名無しさん
2019/11/29(金) 16:58:01.66ID:kFqrise0 555
556デフォルトの名無しさん
2019/11/29(金) 18:54:08.05ID:9qxidx0X キャリーフラグを持たないアーキテクチャ・・・
MIPS?PPC?IA-64?死屍累々じゃねーかw
MIPS?PPC?IA-64?死屍累々じゃねーかw
557デフォルトの名無しさん
2019/11/29(金) 19:13:07.84ID:K9qn0Fk+ >>545
>フラグはアウトオブオーダーの妨げになるし
>並列化も出来ないから
また嘘書いてやがる
Core iプロセッサはフラグがあってもアウトオブオーダーしまくりですが?
アウトオブオーダーを正しく理解してたら絶対にこんなことは書かない
分岐も、投機実行で大凡はカバーされるということになっている
フラグの問題は、元の機械語の並べ方に制約が生じるだけで、アウトオブオーダー実行には関係ない
アウトオブオーダーを妨げるケースでも、元のCISCの挙動に合わせるためで、アウトオブオーダーが
関係しているのではない
>SIMDによる並列化プログラムも
>フラグは単なるループ条件くらいにしか使わん
>maskレジスタがその役目を継ぐ
これもまともに理解してないからこそ書ける内容だな
Pen Proになってアウトオブオーダーが使えるようになった時にcmovが導入されたし、
「単なるループ条件」でも投機実行が必要なんだが?
ここまで酷いとお前に語る資格はないよ
>フラグはアウトオブオーダーの妨げになるし
>並列化も出来ないから
また嘘書いてやがる
Core iプロセッサはフラグがあってもアウトオブオーダーしまくりですが?
アウトオブオーダーを正しく理解してたら絶対にこんなことは書かない
分岐も、投機実行で大凡はカバーされるということになっている
フラグの問題は、元の機械語の並べ方に制約が生じるだけで、アウトオブオーダー実行には関係ない
アウトオブオーダーを妨げるケースでも、元のCISCの挙動に合わせるためで、アウトオブオーダーが
関係しているのではない
>SIMDによる並列化プログラムも
>フラグは単なるループ条件くらいにしか使わん
>maskレジスタがその役目を継ぐ
これもまともに理解してないからこそ書ける内容だな
Pen Proになってアウトオブオーダーが使えるようになった時にcmovが導入されたし、
「単なるループ条件」でも投機実行が必要なんだが?
ここまで酷いとお前に語る資格はないよ
558デフォルトの名無しさん
2019/11/29(金) 19:39:22.16ID:4DEcYZGM アウトオブオーダーの妨げの意味がわからんのだね
なんでx86に変な命令があるのか考えてみ
なんでx86に変な命令があるのか考えてみ
559デフォルトの名無しさん
2019/11/29(金) 19:42:57.97ID:4DEcYZGM フラグは本来依存性の無い処理まで依存性が出てくる
フラグが共通だから
レジスタのようにフラグが複数セットあって指定出来ないとダメ
そらがmaskレジスタであったりx86の変な命令であったり
フラグが共通だから
レジスタのようにフラグが複数セットあって指定出来ないとダメ
そらがmaskレジスタであったりx86の変な命令であったり
560デフォルトの名無しさん
2019/11/29(金) 20:21:52.83ID:K9qn0Fk+ >>548,549
ID:YkvT9y9mがID変えたのか、別人なのかどっちだ?
アウトオブオーダーってのは、真の依存関係にない部分を抽出して同時に実行するっていう
アーキテクチャーだ
ループの2周目以降は前の分岐に依存しているから、本来は順番にしか実行できない
しかし、分岐は数値演算と違って結果のパターンが極めて限定されているので、
決め打ちで一時的に依存関係を無視して処理を進めるのが投機実行だ
アウトオブオーダー実行にはフラグレジスタの存在など関係なく、結果に依存関係が
あるかどうかが問題なんだよ
そんなことも理解せずに語ってたのかって言ってんだよ
ID:YkvT9y9mがID変えたのか、別人なのかどっちだ?
アウトオブオーダーってのは、真の依存関係にない部分を抽出して同時に実行するっていう
アーキテクチャーだ
ループの2周目以降は前の分岐に依存しているから、本来は順番にしか実行できない
しかし、分岐は数値演算と違って結果のパターンが極めて限定されているので、
決め打ちで一時的に依存関係を無視して処理を進めるのが投機実行だ
アウトオブオーダー実行にはフラグレジスタの存在など関係なく、結果に依存関係が
あるかどうかが問題なんだよ
そんなことも理解せずに語ってたのかって言ってんだよ
561デフォルトの名無しさん
2019/11/29(金) 20:34:10.69ID:4DEcYZGM フラグを使う演算だと依存関係が出るって言ってんの
関係ない演算でもフラグのせいで依存関係が出る
同じフラグを使うから
関係ない演算でもフラグのせいで依存関係が出る
同じフラグを使うから
562デフォルトの名無しさん
2019/11/29(金) 20:35:56.20ID:4DEcYZGM これで3回目だが...
x86の変なフラグを使う歪んだ命令は何のため?
x86の変なフラグを使う歪んだ命令は何のため?
563デフォルトの名無しさん
2019/11/29(金) 20:58:00.49ID:K9qn0Fk+ jaもjbもキャリーやゼロや符号の論理演算で表現されるのに、どうしてキャリーフラグが
どうのって話になってんの?
>>561
お前がアウトオブオーダーを理解できてないのはわかった
>フラグを使う演算だと依存関係が出るって言ってんの
>関係ない演算でもフラグのせいで依存関係が出る
>同じフラグを使うから
やはり論理レジスタと物理レジスタの理解も出来てないな
フラグを格納できるレジスタが複数あろうがなかろうが、それは命令アーキテクチャの問題であって
アウトオブオーダーの問題ではない
これでどうしてアウトオブオーダーの妨げになるんだよ?
>x86の変なフラグを使う歪んだ命令は何のため?
その変な命令って何だよ?
どうのって話になってんの?
>>561
お前がアウトオブオーダーを理解できてないのはわかった
>フラグを使う演算だと依存関係が出るって言ってんの
>関係ない演算でもフラグのせいで依存関係が出る
>同じフラグを使うから
やはり論理レジスタと物理レジスタの理解も出来てないな
フラグを格納できるレジスタが複数あろうがなかろうが、それは命令アーキテクチャの問題であって
アウトオブオーダーの問題ではない
これでどうしてアウトオブオーダーの妨げになるんだよ?
>x86の変なフラグを使う歪んだ命令は何のため?
その変な命令って何だよ?
564デフォルトの名無しさん
2019/11/29(金) 21:18:44.73ID:4DEcYZGM 命令を調べて出直しておいで
565デフォルトの名無しさん
2019/11/29(金) 21:30:22.27ID:Mi7N2zYE >>552
なんか勘違いしてる。CYの使い方がわからないのではなく、使う場面が少ないからあまり意識しないんじゃないかということ。
なんか勘違いしてる。CYの使い方がわからないのではなく、使う場面が少ないからあまり意識しないんじゃないかということ。
566デフォルトの名無しさん
2019/11/29(金) 21:44:01.72ID:IDh/GqUP >>564
mips64
daddu $2,$4,$6 1clock目
sltu $8,$2,$4 1clock目
dext $8,$8,0,32 2clock目
daddu $3,$5,$7 1clock目
daddu $4,$8,$3 3clock目
3clock 演算回数 計5回 (加算3回、減算1回、シフト1回)
risc-v
add a7,a0,a2 1clock目
sltu a6,a7,a0 1clock目
add t1,a1,a3 1clock目
add a6,a6,t1 2clock目
2clock 演算回数 4回 (加算3回、減算1回)
amd64
add 1clock目
adc 2clock目
2clock 演算回数 2回(加算2回)
mips、risc-vは必死に並列化してるのに速くならない。
むしろキャリーがあったほうが無駄な演算回数が減り消費電力も減り、
演算器に空きができ、他の計算の余力を得ることになり、並列処理能力は上がることが分かる。
キミのいう依存関係が出てmipsのほうが速い例を挙げてほしい。
mips64
daddu $2,$4,$6 1clock目
sltu $8,$2,$4 1clock目
dext $8,$8,0,32 2clock目
daddu $3,$5,$7 1clock目
daddu $4,$8,$3 3clock目
3clock 演算回数 計5回 (加算3回、減算1回、シフト1回)
risc-v
add a7,a0,a2 1clock目
sltu a6,a7,a0 1clock目
add t1,a1,a3 1clock目
add a6,a6,t1 2clock目
2clock 演算回数 4回 (加算3回、減算1回)
amd64
add 1clock目
adc 2clock目
2clock 演算回数 2回(加算2回)
mips、risc-vは必死に並列化してるのに速くならない。
むしろキャリーがあったほうが無駄な演算回数が減り消費電力も減り、
演算器に空きができ、他の計算の余力を得ることになり、並列処理能力は上がることが分かる。
キミのいう依存関係が出てmipsのほうが速い例を挙げてほしい。
567デフォルトの名無しさん
2019/11/29(金) 21:59:54.67ID:/ptQUX0m568デフォルトの名無しさん
2019/11/30(土) 07:32:32.63ID:zk5zlAHc569デフォルトの名無しさん
2019/11/30(土) 07:35:49.37ID:zk5zlAHc MIPSの話が出るとすぐにキャリーフラグを連呼する例の人かな
彼は8bitCPUの話が好きみたいだが
もう、既に死んでる6502、Z80、6809、68Kあたりを挙げてるからすぐにわかる
彼は8bitCPUの話が好きみたいだが
もう、既に死んでる6502、Z80、6809、68Kあたりを挙げてるからすぐにわかる
570デフォルトの名無しさん
2019/11/30(土) 07:38:44.36ID:zk5zlAHc 8bitCPUなら多倍長演算はよく使うだろうが64bitCPUではほぼ出番がない
571デフォルトの名無しさん
2019/11/30(土) 07:45:40.61ID:xhEM6aVw572デフォルトの名無しさん
2019/11/30(土) 07:55:34.04ID:zk5zlAHc RISC-VならARMのCortex-A72より早いコアができたってさ
このクラスの性能のCPUはx86、POWER、ARM以外にないだろうに
SiFive readies U8-Series RISC-V core designs to compete with ARM's Cortex-A72 models
https://www.notebookcheck.net/SiFive-readies-U8-Series-RISC-V-core-designs-to-compete-with-ARM-s-Cortex-A72-models.440633.0.html
このクラスの性能のCPUはx86、POWER、ARM以外にないだろうに
SiFive readies U8-Series RISC-V core designs to compete with ARM's Cortex-A72 models
https://www.notebookcheck.net/SiFive-readies-U8-Series-RISC-V-core-designs-to-compete-with-ARM-s-Cortex-A72-models.440633.0.html
573デフォルトの名無しさん
2019/11/30(土) 08:04:40.62ID:zk5zlAHc >>571
別人の発言なのに敵視した人は誰でも同一人物だと思っちゃう人?
別人の発言なのに敵視した人は誰でも同一人物だと思っちゃう人?
574デフォルトの名無しさん
2019/11/30(土) 08:05:52.96ID:xhEM6aVw575デフォルトの名無しさん
2019/11/30(土) 08:10:23.93ID:zk5zlAHc RISC-Vの中国製チップを使ったマイコンボード手に入れたが、
普通にCortex-A7クラスのIPCがあってびっくりした
ARMと違ってRISC-Vなのでおそらく中国の半導体メーカーがコアの設計までしたんだろうな
RISC-Vならオープンソースのコアがあるから
中国の半導体メーカーでもそれを参考にして設計できるんだろうね
RISC-Vは中国やインドで推進してるから今後普及していくだろうね
普通にCortex-A7クラスのIPCがあってびっくりした
ARMと違ってRISC-Vなのでおそらく中国の半導体メーカーがコアの設計までしたんだろうな
RISC-Vならオープンソースのコアがあるから
中国の半導体メーカーでもそれを参考にして設計できるんだろうね
RISC-Vは中国やインドで推進してるから今後普及していくだろうね
576デフォルトの名無しさん
2019/11/30(土) 08:12:36.49ID:WebQyLi7 SIMD命令にキャリーフラグやADC/SBB/RCR/RCL命令が無いのが
演算としては使わないっていう証拠
こういった命令は昔のチープな環境のなごり
演算としては使わないっていう証拠
こういった命令は昔のチープな環境のなごり
577デフォルトの名無しさん
2019/11/30(土) 08:14:24.92ID:zk5zlAHc >>574
たとえば、
CMP EAX,10
JB hogehoge
こんなコードだと比較命令でフラグレジスタが変わるが
次の命令ですぐにフラグレジスタを参照してるってことじゃないの?
俺が発言したわけじゃないから知らんけど
たとえば、
CMP EAX,10
JB hogehoge
こんなコードだと比較命令でフラグレジスタが変わるが
次の命令ですぐにフラグレジスタを参照してるってことじゃないの?
俺が発言したわけじゃないから知らんけど
578デフォルトの名無しさん
2019/11/30(土) 08:25:28.29ID:xhEM6aVw579デフォルトの名無しさん
2019/11/30(土) 08:30:24.01ID:zk5zlAHc580デフォルトの名無しさん
2019/11/30(土) 08:33:19.07ID:zk5zlAHc そもそもキャリーフラグが有用なのは2進バイナリの多倍長演算の時だけ
64bitCPUではほぼ出番がない
64bitCPUではほぼ出番がない
581デフォルトの名無しさん
2019/11/30(土) 08:45:13.32ID:xhEM6aVw 挟むめないって挟む理由あるアルゴリズムなんて存在するか?
そんなコード書ける高級言語はないし。キミは一体RISCで何を計算したいんだ?
そんなコード書ける高級言語はないし。キミは一体RISCで何を計算したいんだ?
582デフォルトの名無しさん
2019/11/30(土) 09:00:24.68ID:zk5zlAHc アセンブラの話してるのになんで高級言語の話になるのかな?
MIPSならslt $2, $3, 11とジャンプ命令の間にほかの命令を挟めるってこと
MIPSならslt $2, $3, 11とジャンプ命令の間にほかの命令を挟めるってこと
583デフォルトの名無しさん
2019/11/30(土) 09:22:02.63ID:xhEM6aVw >>582
そうではない。挟まなきゃならない理由を聞いている。
それで並列化できなかったものが並列化可能なら例になるがそうではない。判定の前に命令書いても依存関係がなければ並列化される。
キミの例は可読性が悪くなる書き方ができるというだけで並列化できる例ではない。むしろMPSの欠点だ。
> フラグはアウトオブオーダーの妨げになるし並列化も出来ないから
の例を聞いてるんだよ。ひとつも例が出せてないじゃないか。
そうではない。挟まなきゃならない理由を聞いている。
それで並列化できなかったものが並列化可能なら例になるがそうではない。判定の前に命令書いても依存関係がなければ並列化される。
キミの例は可読性が悪くなる書き方ができるというだけで並列化できる例ではない。むしろMPSの欠点だ。
> フラグはアウトオブオーダーの妨げになるし並列化も出来ないから
の例を聞いてるんだよ。ひとつも例が出せてないじゃないか。
584デフォルトの名無しさん
2019/11/30(土) 09:40:23.31ID:zk5zlAHc 演算のたびにフラグレジスタが変化するのは無駄だとは思うけどね
特にアドレス計算のたびにフラグレジスタが変化するのはうっとうしい
ARMだと加算減算命令はフラグレジスタが変化するものと変化しないのと2種類用意されてるね
特にアドレス計算のたびにフラグレジスタが変化するのはうっとうしい
ARMだと加算減算命令はフラグレジスタが変化するものと変化しないのと2種類用意されてるね
585デフォルトの名無しさん
2019/11/30(土) 09:43:31.34ID:zk5zlAHc しかし、キャリーフラグの話題でここまでスレ伸ばすのはすごいね
8bitのAVR信者っぽいんだけど
8bitだとキャリーフラグがないと何もできないからね
8bitのAVR信者っぽいんだけど
8bitだとキャリーフラグがないと何もできないからね
586デフォルトの名無しさん
2019/11/30(土) 09:53:10.63ID:xhEM6aVw 結局、自分から言い出しといて挟まなきゃならない理由も説明してくれないのか。
まだほとんどコード書いたことない初心者なんだね^^
まだほとんどコード書いたことない初心者なんだね^^
587デフォルトの名無しさん
2019/11/30(土) 11:02:33.57ID:WebQyLi7 間に挟みたい場面なんていくらでもあるだろうに
少しは考えたら?
少しは考えたら?
588デフォルトの名無しさん
2019/11/30(土) 11:06:05.90ID:xhEM6aVw589デフォルトの名無しさん
2019/11/30(土) 11:18:54.45ID:zk5zlAHc パイプラインがストールするとか言うから
MIPSやRISC-Vならslt命令とbne命令の間に他の命令を挟めるよと言っただけ
自分で発言を誘っておいて意味もわからないんだな
MIPSやRISC-Vならslt命令とbne命令の間に他の命令を挟めるよと言っただけ
自分で発言を誘っておいて意味もわからないんだな
590デフォルトの名無しさん
2019/11/30(土) 11:28:29.70ID:xhEM6aVw >>589
頓珍漢。ストールするのは条件ジャンプだから。挟んでもその後でmipsはストールする。
挟まなきゃならない理由の説明になってなし、並列化できるでなきいの例でもなんでもない。
話戻すよ。mipsは並列化できてフラグありCPUで並列化できない例を挙げてと言ってるんだよ。
頓珍漢。ストールするのは条件ジャンプだから。挟んでもその後でmipsはストールする。
挟まなきゃならない理由の説明になってなし、並列化できるでなきいの例でもなんでもない。
話戻すよ。mipsは並列化できてフラグありCPUで並列化できない例を挙げてと言ってるんだよ。
591デフォルトの名無しさん
2019/11/30(土) 11:30:10.99ID:zk5zlAHc まあ、いつものAVRの人の荒らしだからまともに答えるだけ無駄
592デフォルトの名無しさん
2019/11/30(土) 11:41:14.59ID:WebQyLi7 x86のイビツな命令は調べたの?
593デフォルトの名無しさん
2019/11/30(土) 11:42:25.43ID:WebQyLi7 SIMD用キャリーフラグがあるCPUってある?
594デフォルトの名無しさん
2019/11/30(土) 11:49:35.35ID:xhEM6aVw >>591
たった一つの例が全然例でなかったのに勝利宣言か。だいたいAVRもキミの好きなRISCだろう。
cmp
jb
並列化できない!! ←mipsでもできません
cmp
add
jb
mipsならこんなことができる!!
↑
挟む理由は別になし。可読性が低下するだけ。
同じことしたいならadd、cmp、jbの順に書けばいいだけ。これで並列可。
しかもmipsのほうが遅いという。
たった一つの例が全然例でなかったのに勝利宣言か。だいたいAVRもキミの好きなRISCだろう。
cmp
jb
並列化できない!! ←mipsでもできません
cmp
add
jb
mipsならこんなことができる!!
↑
挟む理由は別になし。可読性が低下するだけ。
同じことしたいならadd、cmp、jbの順に書けばいいだけ。これで並列可。
しかもmipsのほうが遅いという。
595デフォルトの名無しさん
2019/11/30(土) 12:20:15.39ID:WebQyLi7 cmpに時間がかかる(可能性がある)なら挟む
分岐なのでcmp結果はなるべく早く欲しい
当然命令順が速い方が実行順が速い可能性が高くなる
アセンブラに可読性?
99.99%のコードはコンパイラを使うから
そもそも可読性を考えて命令を作らない
分岐なのでcmp結果はなるべく早く欲しい
当然命令順が速い方が実行順が速い可能性が高くなる
アセンブラに可読性?
99.99%のコードはコンパイラを使うから
そもそも可読性を考えて命令を作らない
596デフォルトの名無しさん
2019/11/30(土) 12:54:50.65ID:WebQyLi7 キャリーフラグの典型的な用途
多倍長整数の加算
ADCを連続で行うが
この間にキャリーフラグを使う命令は入れられない
今時のCPUは整数命令を4個同時に実行出来るので
間に命令をいれないと性能の1/4しか活かせない
性能を活かすには4個パラにするか、
多倍長加算以外の処理を入れることになるが
キャリーフラグのせいでこれが出来ない
最大限に最適化する場合はSIMD命令を使うのだが
これにもキャリーフラグなんてものは無い
多倍長整数の加算
ADCを連続で行うが
この間にキャリーフラグを使う命令は入れられない
今時のCPUは整数命令を4個同時に実行出来るので
間に命令をいれないと性能の1/4しか活かせない
性能を活かすには4個パラにするか、
多倍長加算以外の処理を入れることになるが
キャリーフラグのせいでこれが出来ない
最大限に最適化する場合はSIMD命令を使うのだが
これにもキャリーフラグなんてものは無い
597デフォルトの名無しさん
2019/11/30(土) 12:58:12.03ID:+5qlZFtZ 現状RISC-Vの性能はAMD64に及ばなくね?理論がどうであれ実証できなきゃ絵に描いた餅よ
IA-32は長らくクソと言わ続けているがIntelとAMDが競争しているおかげか
そのハンデをねじ伏せいまだに高性能プロセッサの一角だしな
IA-32は長らくクソと言わ続けているがIntelとAMDが競争しているおかげか
そのハンデをねじ伏せいまだに高性能プロセッサの一角だしな
598デフォルトの名無しさん
2019/11/30(土) 13:04:28.68ID:WebQyLi7 こんな極端な例じゃなくても
実際の実行順に近い順番で命令を書く方が
アウトオブオーダーの制約に引っ掛かりにくく
性能を活かせやすい
実際の実行順で
キャリーフラグを変更する命令と
キャリーフラグを使う命令
の間に何も命令を実行しないなんてことは非常にマレ
あったとすれば、
それはCPUの能力を全く活かしてない糞コード
実際の実行順に近い順番で命令を書く方が
アウトオブオーダーの制約に引っ掛かりにくく
性能を活かせやすい
実際の実行順で
キャリーフラグを変更する命令と
キャリーフラグを使う命令
の間に何も命令を実行しないなんてことは非常にマレ
あったとすれば、
それはCPUの能力を全く活かしてない糞コード
599デフォルトの名無しさん
2019/11/30(土) 13:09:58.22ID:xhEM6aVw >>595
> cmpに時間がかかる(可能性がある)なら挟む
また理由は書かないのか。まあ理由は分からないがMIPSはそんな可能性があるとは遅くて大変だな。
インテルの実装は速くなることはあっても遅くはならないから。いつになったらフラグで遅くなる例を出してくれるんだか。
まさか条件分岐でインテルやARMに勝つ気じゃないよね?
> cmpに時間がかかる(可能性がある)なら挟む
また理由は書かないのか。まあ理由は分からないがMIPSはそんな可能性があるとは遅くて大変だな。
インテルの実装は速くなることはあっても遅くはならないから。いつになったらフラグで遅くなる例を出してくれるんだか。
まさか条件分岐でインテルやARMに勝つ気じゃないよね?
600デフォルトの名無しさん
2019/11/30(土) 13:31:31.66ID:K1Ueg6YG MIPS vs ARM (またはx86) だと思ってる時点で話にならん
601デフォルトの名無しさん
2019/11/30(土) 13:33:55.49ID:xhEM6aVw602デフォルトの名無しさん
2019/11/30(土) 15:27:59.62ID:rGr6foFe いつものAVR信者だからかまっちゃダメ
MIPSと聞くと毎回同じようにキャリーフラグの話を始める
いつも自分が正義だと思い込んでて他人の都合の悪い意見は全く無視するからね
http://rio2016.5ch.net/test/read.cgi/denki/1462177958/134
134 :774ワット発電中さん [↓] :2019/11/30(土) 14:53:33.69 ID:IRFNBB8m.net
またMIPS君が他の板で暴れて論破された模様TT
フラグで遅くなる例を出せと言われて一つも出せなかったらしい。
MIPSと聞くと毎回同じようにキャリーフラグの話を始める
いつも自分が正義だと思い込んでて他人の都合の悪い意見は全く無視するからね
http://rio2016.5ch.net/test/read.cgi/denki/1462177958/134
134 :774ワット発電中さん [↓] :2019/11/30(土) 14:53:33.69 ID:IRFNBB8m.net
またMIPS君が他の板で暴れて論破された模様TT
フラグで遅くなる例を出せと言われて一つも出せなかったらしい。
603デフォルトの名無しさん
2019/11/30(土) 15:30:00.80ID:AFPNe0zJ >>574
そりゃ逃げ回るでしょ、アウトオブオーダーがどんな仕組みで並列に実行できるのか理解してないんだからw
こんなこと書いてるからな
>フラグは本来依存性の無い処理まで依存性が出てくる
>フラグが共通だから
これのどこがアウトオブオーダーによる制限なんだよw
間に挟めないのは元の命令アーキテクチャによる制限だって書いたよな
>>596
>今時のCPUは整数命令を4個同時に実行出来るので
>間に命令をいれないと性能の1/4しか活かせない
また出まかせをw
ここ数年インテルがリオーダーバッファのサイズとか強化してるのは何でだよ?
メモリアクセスのレイテンシの影響を軽減するためだろ
そういう状態ではカウンタとかポインタのインクリメントみたいな処理は前倒しで実行されるから、
間に命令を挟んだのと同じことになるよな
そりゃ逃げ回るでしょ、アウトオブオーダーがどんな仕組みで並列に実行できるのか理解してないんだからw
こんなこと書いてるからな
>フラグは本来依存性の無い処理まで依存性が出てくる
>フラグが共通だから
これのどこがアウトオブオーダーによる制限なんだよw
間に挟めないのは元の命令アーキテクチャによる制限だって書いたよな
>>596
>今時のCPUは整数命令を4個同時に実行出来るので
>間に命令をいれないと性能の1/4しか活かせない
また出まかせをw
ここ数年インテルがリオーダーバッファのサイズとか強化してるのは何でだよ?
メモリアクセスのレイテンシの影響を軽減するためだろ
そういう状態ではカウンタとかポインタのインクリメントみたいな処理は前倒しで実行されるから、
間に命令を挟んだのと同じことになるよな
604デフォルトの名無しさん
2019/11/30(土) 15:44:48.54ID:WebQyLi7 分岐に必要な命令を先に実行するほど頭は良くない
単に実行出来る命令から実行するだけ
だからコンパイラがわざわざ順番を変える
フラグのせいでそれに大きな制限がつく
アウトオブオーダーが完璧ならコンパイラがわざわざ順番を変えたりループを展開したりしないから
同じ命令を使えば誰が書いても同じパフォーマンス
そこまで時代は進んでない
だからCコードで最適化してコンパイラが最適化してCPUが最適化してるの
フラグは8bitとか16bitとか、
非常に規模の小さなCPUにとっては便利だが
規模の大きなCPUでは足かせになる
使用頻度は減って
使用用途はほとんど分岐くらい
レジスタの数も少ないと問題だろ?
フラグも同じ
単に実行出来る命令から実行するだけ
だからコンパイラがわざわざ順番を変える
フラグのせいでそれに大きな制限がつく
アウトオブオーダーが完璧ならコンパイラがわざわざ順番を変えたりループを展開したりしないから
同じ命令を使えば誰が書いても同じパフォーマンス
そこまで時代は進んでない
だからCコードで最適化してコンパイラが最適化してCPUが最適化してるの
フラグは8bitとか16bitとか、
非常に規模の小さなCPUにとっては便利だが
規模の大きなCPUでは足かせになる
使用頻度は減って
使用用途はほとんど分岐くらい
レジスタの数も少ないと問題だろ?
フラグも同じ
605デフォルトの名無しさん
2019/11/30(土) 15:46:59.54ID:WebQyLi7606デフォルトの名無しさん
2019/11/30(土) 15:49:53.66ID:WebQyLi7 RCR/RCL による多倍長の1ビットシフトなんか最悪だ
依存性が途切れないので1クロックに1回しか出来ない
ADCもSBBも依存性が途切れないから
もっと頭の良い方法を使うんだけど
依存性が途切れないので1クロックに1回しか出来ない
ADCもSBBも依存性が途切れないから
もっと頭の良い方法を使うんだけど
607デフォルトの名無しさん
2019/11/30(土) 15:50:53.74ID:WebQyLi7 まあそもそも可読性とか言ってる時点で話にならん
アセンブラなんか使わないで素直にCで書いてな
アセンブラなんか使わないで素直にCで書いてな
608デフォルトの名無しさん
2019/11/30(土) 15:53:07.85ID:AFPNe0zJ ID:zk5zlAHcはID:4DEcYZGMやID:zk5zlAHcなんて擁護すると見識を疑われるぞ!
>>604
うわっ、酷っ!
>レジスタの数も少ないと問題だろ?
>フラグも同じ
結局これしか理解できてないから壮大な妄想を展開してたのかよw
>>604
うわっ、酷っ!
>レジスタの数も少ないと問題だろ?
>フラグも同じ
結局これしか理解できてないから壮大な妄想を展開してたのかよw
609デフォルトの名無しさん
2019/11/30(土) 15:54:01.77ID:AFPNe0zJ ID:4DEcYZGMとID:WebQyLi7
だった
だった
610デフォルトの名無しさん
2019/11/30(土) 15:54:06.44ID:WebQyLi7 大体、
普段多倍長なんか使わんだろ
頻繁に演算でフラグを使う場面ていつだよ?
64bitありゃ99%は問題ないだろ
フラグの用途のほとんどが条件分岐だろうが
SIMDにフラグが無い理由を少しは考えろ
普段多倍長なんか使わんだろ
頻繁に演算でフラグを使う場面ていつだよ?
64bitありゃ99%は問題ないだろ
フラグの用途のほとんどが条件分岐だろうが
SIMDにフラグが無い理由を少しは考えろ
611デフォルトの名無しさん
2019/11/30(土) 15:57:07.46ID:AFPNe0zJ >>606
>RCR/RCL による多倍長の1ビットシフトなんか最悪だ
>依存性が途切れないので1クロックに1回しか出来ない
これも突っ込みどころのある発言w
どうして依存性が切れないのか、やっぱり理解できてない
>RCR/RCL による多倍長の1ビットシフトなんか最悪だ
>依存性が途切れないので1クロックに1回しか出来ない
これも突っ込みどころのある発言w
どうして依存性が切れないのか、やっぱり理解できてない
612デフォルトの名無しさん
2019/11/30(土) 15:59:39.71ID:WebQyLi7 1000ワードの多倍長加算を100個
データはキャュシュにあるとして
どんなコードにする?
糞遅いコードしか書けないだろうね
データはキャュシュにあるとして
どんなコードにする?
糞遅いコードしか書けないだろうね
613デフォルトの名無しさん
2019/11/30(土) 16:00:43.39ID:WebQyLi7614デフォルトの名無しさん
2019/11/30(土) 16:01:19.45ID:WebQyLi7 レベルが低すぎて会話にならない
615デフォルトの名無しさん
2019/11/30(土) 16:05:29.45ID:AFPNe0zJ どうして依存性が切れないのか理解できてないのがレベルが低いって言ってんだよ
WAW依存とか理解してるか?
WAW依存とか理解してるか?
616デフォルトの名無しさん
2019/11/30(土) 16:29:11.13ID:WebQyLi7 >>612 の擬似コード
for (int i = 0 ; i < 100 ; i++){
. . CLC
. . for (int j = 0 ; j < 1000 ; j++){
. . . . ADC dest[i][j], src[i][j]
. . }
}
メモリアクセスや制御時間がゼロとしても
100 x 1000クロックかかる
ADCが前のADCの結果に依存するから
順番に処理をするしかない
RCL/RCRを使ったシフトも同じ
for (int i = 0 ; i < 100 ; i++){
. . CLC
. . for (int j = 0 ; j < 1000 ; j++){
. . . . ADC dest[i][j], src[i][j]
. . }
}
メモリアクセスや制御時間がゼロとしても
100 x 1000クロックかかる
ADCが前のADCの結果に依存するから
順番に処理をするしかない
RCL/RCRを使ったシフトも同じ
617デフォルトの名無しさん
2019/11/30(土) 16:32:15.54ID:WebQyLi7 これはコンパイラの最適化やCPUのアウトオブオーダーでは解決出来ない
アセンブラで書こうがCで書こうが
頭が悪い人にとってはこれが限界
アセンブラで書こうがCで書こうが
頭が悪い人にとってはこれが限界
618デフォルトの名無しさん
2019/11/30(土) 17:01:55.28ID:rGr6foFe ただの荒らしにマジレスしても疲れるだけだよ
619デフォルトの名無しさん
2019/11/30(土) 17:22:23.36ID:xhEM6aVw そういうキャリーが必要な、前の計算結果が必要で依存する計算は、
キャリーがないCPUだとさらに効率は悪化するから例として意味がない。
128bitを1bit左シフト
SHL
RCL
mips64だとどういうコードですか?
andi
srl
sll
sll
or
みたいな? 大変でつね。他に便利な命令でもあるんですかね?RISCに対して失礼な質問でしたね^^
キャリーがないCPUだとさらに効率は悪化するから例として意味がない。
128bitを1bit左シフト
SHL
RCL
mips64だとどういうコードですか?
andi
srl
sll
sll
or
みたいな? 大変でつね。他に便利な命令でもあるんですかね?RISCに対して失礼な質問でしたね^^
620デフォルトの名無しさん
2019/11/30(土) 17:32:16.88ID:8+8CeiWg > 頭が悪い人にとってはこれが限界
ほんとそのまんまでわらた
依存性を減らす、隠蔽するのが最適化の肝
ちょっとは考えてね
ほんとそのまんまでわらた
依存性を減らす、隠蔽するのが最適化の肝
ちょっとは考えてね
621デフォルトの名無しさん
2019/11/30(土) 17:36:12.41ID:8+8CeiWg622デフォルトの名無しさん
2019/11/30(土) 17:37:47.29ID:rGr6foFe それって1bit以外のシフトならどうなるの?
623デフォルトの名無しさん
2019/11/30(土) 17:45:13.95ID:8+8CeiWg キャリーフラグの人は多倍長1ビットシフトを繰り返す
普通の人はバレルシフタをうまく使う
普通の人はバレルシフタをうまく使う
624デフォルトの名無しさん
2019/11/30(土) 17:52:27.94ID:21OIT27J 一度に1000回もADCするとかよほど暇なアプリケーションなのだろうな
マイコンのADCと仮定すると速い物でも計0.5〜1msecくらいかかるだろう
単に移動平均が欲しいだけなら必要なコストはADC変換1回に付き加減算各1回+メモリアクセスですむんだし
マイコンのADCと仮定すると速い物でも計0.5〜1msecくらいかかるだろう
単に移動平均が欲しいだけなら必要なコストはADC変換1回に付き加減算各1回+メモリアクセスですむんだし
625デフォルトの名無しさん
2019/11/30(土) 19:36:02.39ID:8+8CeiWg 何で移動平均が突然?
多倍長の話だろ?
そもそも多倍長なんか普通は使わない
普通は64bitで収まる
だからキャリーフラグを使った足し算なんて普通はしない
キャリーフラグを使った演算は
8bit、16bit時代の、遅いCPU時代のなごりだ
多倍長の話だろ?
そもそも多倍長なんか普通は使わない
普通は64bitで収まる
だからキャリーフラグを使った足し算なんて普通はしない
キャリーフラグを使った演算は
8bit、16bit時代の、遅いCPU時代のなごりだ
626デフォルトの名無しさん
2019/11/30(土) 21:00:54.84ID:xhEM6aVw >>625
ARMは最初から32bitだし、AVRに至っては32bit時代に新規に開発された8bitCPUだし、
共に市場で成功したRISC CPUである。キミがキャリー使わないのは単にコード書かないからに過ぎない。
Cでif文でも書けばコンパイラが必然的に使ってしまう。
ARMは最初から32bitだし、AVRに至っては32bit時代に新規に開発された8bitCPUだし、
共に市場で成功したRISC CPUである。キミがキャリー使わないのは単にコード書かないからに過ぎない。
Cでif文でも書けばコンパイラが必然的に使ってしまう。
627デフォルトの名無しさん
2019/11/30(土) 21:04:16.02ID:xhEM6aVw >>623
さて、キミの任意bitシフトのバレルシフタのコードみせてもらおう。verilogでいいよ。
さて、キミの任意bitシフトのバレルシフタのコードみせてもらおう。verilogでいいよ。
628デフォルトの名無しさん
2019/11/30(土) 22:20:20.00ID:jbs9cucn629デフォルトの名無しさん
2019/11/30(土) 22:23:01.70ID:jbs9cucn630デフォルトの名無しさん
2019/11/30(土) 22:31:00.07ID:AFPNe0zJ >そもそも多倍長なんか普通は使わない
とか書いておきながら100個の多倍長とか、ずいぶんと極端な例を持ち出すことw
ローテート命令が依存性を抱えてる理由に即答することもできずに、別の話題で誤魔化そうとしてるから
あんたがアウトオブオーダーをまともに理解してないのは確定的だな
これで究極の最適化だのほざいてたのかよw
とか書いておきながら100個の多倍長とか、ずいぶんと極端な例を持ち出すことw
ローテート命令が依存性を抱えてる理由に即答することもできずに、別の話題で誤魔化そうとしてるから
あんたがアウトオブオーダーをまともに理解してないのは確定的だな
これで究極の最適化だのほざいてたのかよw
631デフォルトの名無しさん
2019/11/30(土) 22:33:09.34ID:jbs9cucn 煽れば答えがもらえると思うのは間違い
レベルが違い過ぎて話にならんから無視するぞ
レベルが違い過ぎて話にならんから無視するぞ
632デフォルトの名無しさん
2019/11/30(土) 22:34:55.48ID:FaWuMeWQ >>607
「話にならん」が口癖の人には悪いけど、可読性は非常に大事。
MASMならマクロが使えるから、定型的な処理はマクロで書いておけばその処理が必要な部分は1行で書けるし、
if-elseマクロを使うだけでもだいぶわかりやすくなる。
http://shaw.la.coocan.jp/masm/control.php
特に他人が書いたソースをいじらないといけないときは可読性大事。修正や変更の手間が大幅に省ける。
「話にならん」が口癖の人には悪いけど、可読性は非常に大事。
MASMならマクロが使えるから、定型的な処理はマクロで書いておけばその処理が必要な部分は1行で書けるし、
if-elseマクロを使うだけでもだいぶわかりやすくなる。
http://shaw.la.coocan.jp/masm/control.php
特に他人が書いたソースをいじらないといけないときは可読性大事。修正や変更の手間が大幅に省ける。
633デフォルトの名無しさん
2019/11/30(土) 22:37:24.82ID:xhEM6aVw >>629
頓珍漢なレスにマジレスしてやったらそれを理解せず頓珍漢なこと言われてもだな。
それともMIPSは1bitシフトとバレルシフタと命令が別なのかい? RISCなのにw
> キャリーフラグの人は多倍長1ビットシフトを繰り返す
> 普通の人はバレルシフタをうまく使う
とにかく煽りではなくコード見せてよ。
バレルシフタを上手くつかった任意bitのシフトを。キミは普通の人なんだろ?
頓珍漢なレスにマジレスしてやったらそれを理解せず頓珍漢なこと言われてもだな。
それともMIPSは1bitシフトとバレルシフタと命令が別なのかい? RISCなのにw
> キャリーフラグの人は多倍長1ビットシフトを繰り返す
> 普通の人はバレルシフタをうまく使う
とにかく煽りではなくコード見せてよ。
バレルシフタを上手くつかった任意bitのシフトを。キミは普通の人なんだろ?
634デフォルトの名無しさん
2019/11/30(土) 22:44:56.42ID:AFPNe0zJ635デフォルトの名無しさん
2019/12/01(日) 01:20:15.72ID:npZTl1ra 100個の多倍長の配列なんて極端な例を持ち出さなきゃ、普通にアウトオブオーダー実行されるってことだよな
でなきゃそんな欠陥CPUなんてスパコンで使うはずないだろうに
mov edx, 1
…
xor eax, eax
キャリーを変化させたい命令
cmovc eax, edx
ってやりゃ、キャリーフラグの結果をGPRに反映できるはずだから、以降は機械語の制限による
依存は切り離せるはずだよな
でなきゃそんな欠陥CPUなんてスパコンで使うはずないだろうに
mov edx, 1
…
xor eax, eax
キャリーを変化させたい命令
cmovc eax, edx
ってやりゃ、キャリーフラグの結果をGPRに反映できるはずだから、以降は機械語の制限による
依存は切り離せるはずだよな
636デフォルトの名無しさん
2019/12/01(日) 01:44:07.93ID:npZTl1ra cmovcじゃなく、
adc eax, 0
でもいいか
こっちの方が余計なレジスタ使わなくていいし
adc eax, 0
でもいいか
こっちの方が余計なレジスタ使わなくていいし
637デフォルトの名無しさん
2019/12/01(日) 02:42:43.59ID:rpSiZ7Ms コンパイラに出力させると
例えば、15bitの左シフトはこんな感じ
$3:$2←$5:$4 << 15
dsrl $2,$4,49
dsll $3,$5,15
or $3,$2,$3
dsll $2,$4,15
risc-vのRV64GCだとこう
a1:a0←a1:a0 << 15
srl a5,a0,49
sll a1,a1,15
sll a0,a0,15
or a1,a5,a1
arm64だとこう
x1:x0←x1:x0 << 15
mov x2, x0
lsl x0, x0, 15
extr x1, x1, x2, 49
例えば、15bitの左シフトはこんな感じ
$3:$2←$5:$4 << 15
dsrl $2,$4,49
dsll $3,$5,15
or $3,$2,$3
dsll $2,$4,15
risc-vのRV64GCだとこう
a1:a0←a1:a0 << 15
srl a5,a0,49
sll a1,a1,15
sll a0,a0,15
or a1,a5,a1
arm64だとこう
x1:x0←x1:x0 << 15
mov x2, x0
lsl x0, x0, 15
extr x1, x1, x2, 49
638デフォルトの名無しさん
2019/12/01(日) 02:43:56.72ID:rpSiZ7Ms 任意のシフトはこんな感じ
$3:$2←$5:$4 << $6
sll $2,$6,0
dsrl $3,$4,1
nor $7,$0,$6
dsrl $7,$3,$7
dsll $3,$5,$2
andi $6,$6,0x40
dsll $2,$4,$2
or $3,$7,$3
movn $3,$2,$6
movn $2,$0,$6
risc-vのRV64GCだとこう
a1:a0←a1:a0 << a2
and a5,a2,64
beqz a5,.L1
sll a1,a0,a2
li a0,0
jal zero, .L2
.L1:
srl a5,a0,1
not a4,a2
srl a5,a5,a4
sll a1,a1,a2
or a1,a5,a1
sll a0,a0,a2
.L2:
$3:$2←$5:$4 << $6
sll $2,$6,0
dsrl $3,$4,1
nor $7,$0,$6
dsrl $7,$3,$7
dsll $3,$5,$2
andi $6,$6,0x40
dsll $2,$4,$2
or $3,$7,$3
movn $3,$2,$6
movn $2,$0,$6
risc-vのRV64GCだとこう
a1:a0←a1:a0 << a2
and a5,a2,64
beqz a5,.L1
sll a1,a0,a2
li a0,0
jal zero, .L2
.L1:
srl a5,a0,1
not a4,a2
srl a5,a5,a4
sll a1,a1,a2
or a1,a5,a1
sll a0,a0,a2
.L2:
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「おこめ券は米以外の食品も買える。効果的な活用を」 地元で農水相 [山形県] [少考さん★]
- 【速報】「女芸人No.1決定戦 THE W」9代目女王にニッチェ! 7年ぶり3度目で悲願の優勝 [牛丼★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 【🐻ニャー】京都府向日市の「クマ目撃情報」は見間違いか 市が映像確認「ネコに似ていた」 [nita★]
- 今年の流行語大賞 『働いて働いて働いてまいります』が受賞で不快感… 過労自殺の遺族らが会見「家族にむち打つような行為だ」 [冬月記者★]
- 【東京】「家族で話題にして」 “世田谷一家殺害から25年 警視庁が呼びかけ [煮卵★]
