アセンブラ初心者スレッド 2©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/04/13(木) 17:35:55.70ID:1WMn3pSz
初心者OK!質問大歓迎!のアセンブラのスレッドです。
基本情報の勉強中の人、PICやH8を勉強中の学生などなど…

前スレ
アセンブラ初心者スレッド
http://echo.2ch.net/test/read.cgi/tech/1314502612/

関連スレ
アセンブラ 13
http://echo.2ch.net/test/read.cgi/tech/1314512680/
2019/11/30(土) 09:40:23.31ID:zk5zlAHc
演算のたびにフラグレジスタが変化するのは無駄だとは思うけどね
特にアドレス計算のたびにフラグレジスタが変化するのはうっとうしい
ARMだと加算減算命令はフラグレジスタが変化するものと変化しないのと2種類用意されてるね
2019/11/30(土) 09:43:31.34ID:zk5zlAHc
しかし、キャリーフラグの話題でここまでスレ伸ばすのはすごいね
8bitのAVR信者っぽいんだけど
8bitだとキャリーフラグがないと何もできないからね
2019/11/30(土) 09:53:10.63ID:xhEM6aVw
結局、自分から言い出しといて挟まなきゃならない理由も説明してくれないのか。

まだほとんどコード書いたことない初心者なんだね^^
2019/11/30(土) 11:02:33.57ID:WebQyLi7
間に挟みたい場面なんていくらでもあるだろうに
少しは考えたら?
2019/11/30(土) 11:06:05.90ID:xhEM6aVw
>>587
自分で言い出しといて、答え、コード例は絶対に言わないのね。

そりゃコード書かないもんね、大学の人は。初心者だもん。
2019/11/30(土) 11:18:54.45ID:zk5zlAHc
パイプラインがストールするとか言うから
MIPSやRISC-Vならslt命令とbne命令の間に他の命令を挟めるよと言っただけ
自分で発言を誘っておいて意味もわからないんだな
2019/11/30(土) 11:28:29.70ID:xhEM6aVw
>>589
頓珍漢。ストールするのは条件ジャンプだから。挟んでもその後でmipsはストールする。
挟まなきゃならない理由の説明になってなし、並列化できるでなきいの例でもなんでもない。

話戻すよ。mipsは並列化できてフラグありCPUで並列化できない例を挙げてと言ってるんだよ。
2019/11/30(土) 11:30:10.99ID:zk5zlAHc
まあ、いつものAVRの人の荒らしだからまともに答えるだけ無駄
2019/11/30(土) 11:41:14.59ID:WebQyLi7
x86のイビツな命令は調べたの?
2019/11/30(土) 11:42:25.43ID:WebQyLi7
SIMD用キャリーフラグがあるCPUってある?
2019/11/30(土) 11:49:35.35ID:xhEM6aVw
>>591
たった一つの例が全然例でなかったのに勝利宣言か。だいたいAVRもキミの好きなRISCだろう。

cmp
jb

並列化できない!! ←mipsでもできません

cmp
add
jb

mipsならこんなことができる!!

挟む理由は別になし。可読性が低下するだけ。
同じことしたいならadd、cmp、jbの順に書けばいいだけ。これで並列可。
しかもmipsのほうが遅いという。
2019/11/30(土) 12:20:15.39ID:WebQyLi7
cmpに時間がかかる(可能性がある)なら挟む
分岐なのでcmp結果はなるべく早く欲しい
当然命令順が速い方が実行順が速い可能性が高くなる

アセンブラに可読性?
99.99%のコードはコンパイラを使うから
そもそも可読性を考えて命令を作らない
2019/11/30(土) 12:54:50.65ID:WebQyLi7
キャリーフラグの典型的な用途
多倍長整数の加算

ADCを連続で行うが
この間にキャリーフラグを使う命令は入れられない

今時のCPUは整数命令を4個同時に実行出来るので
間に命令をいれないと性能の1/4しか活かせない
性能を活かすには4個パラにするか、
多倍長加算以外の処理を入れることになるが
キャリーフラグのせいでこれが出来ない

最大限に最適化する場合はSIMD命令を使うのだが
これにもキャリーフラグなんてものは無い
2019/11/30(土) 12:58:12.03ID:+5qlZFtZ
現状RISC-Vの性能はAMD64に及ばなくね?理論がどうであれ実証できなきゃ絵に描いた餅よ
IA-32は長らくクソと言わ続けているがIntelとAMDが競争しているおかげか
そのハンデをねじ伏せいまだに高性能プロセッサの一角だしな
2019/11/30(土) 13:04:28.68ID:WebQyLi7
こんな極端な例じゃなくても
実際の実行順に近い順番で命令を書く方が
アウトオブオーダーの制約に引っ掛かりにくく
性能を活かせやすい

実際の実行順で
キャリーフラグを変更する命令と
キャリーフラグを使う命令
の間に何も命令を実行しないなんてことは非常にマレ
あったとすれば、
それはCPUの能力を全く活かしてない糞コード
2019/11/30(土) 13:09:58.22ID:xhEM6aVw
>>595
> cmpに時間がかかる(可能性がある)なら挟む

また理由は書かないのか。まあ理由は分からないがMIPSはそんな可能性があるとは遅くて大変だな。
インテルの実装は速くなることはあっても遅くはならないから。いつになったらフラグで遅くなる例を出してくれるんだか。
まさか条件分岐でインテルやARMに勝つ気じゃないよね?
2019/11/30(土) 13:31:31.66ID:K1Ueg6YG
MIPS vs ARM (またはx86) だと思ってる時点で話にならん
2019/11/30(土) 13:33:55.49ID:xhEM6aVw
>>600
煽る暇があったらフラグで遅くなる例をひとつぐらい出してよ。
128bit加算も条件分岐も全部MIPSのほうが遅い例ばかりじゃん。
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

フラグで遅くなる例を出せと言われて一つも出せなかったらしい。
2019/11/30(土) 15:30:00.80ID:AFPNe0zJ
>>574
そりゃ逃げ回るでしょ、アウトオブオーダーがどんな仕組みで並列に実行できるのか理解してないんだからw
こんなこと書いてるからな
>フラグは本来依存性の無い処理まで依存性が出てくる
>フラグが共通だから
これのどこがアウトオブオーダーによる制限なんだよw
間に挟めないのは元の命令アーキテクチャによる制限だって書いたよな

>>596
>今時のCPUは整数命令を4個同時に実行出来るので
>間に命令をいれないと性能の1/4しか活かせない
また出まかせをw
ここ数年インテルがリオーダーバッファのサイズとか強化してるのは何でだよ?
メモリアクセスのレイテンシの影響を軽減するためだろ
そういう状態ではカウンタとかポインタのインクリメントみたいな処理は前倒しで実行されるから、
間に命令を挟んだのと同じことになるよな
2019/11/30(土) 15:44:48.54ID:WebQyLi7
分岐に必要な命令を先に実行するほど頭は良くない
単に実行出来る命令から実行するだけ
だからコンパイラがわざわざ順番を変える

フラグのせいでそれに大きな制限がつく

アウトオブオーダーが完璧ならコンパイラがわざわざ順番を変えたりループを展開したりしないから
同じ命令を使えば誰が書いても同じパフォーマンス

そこまで時代は進んでない
だからCコードで最適化してコンパイラが最適化してCPUが最適化してるの

フラグは8bitとか16bitとか、
非常に規模の小さなCPUにとっては便利だが
規模の大きなCPUでは足かせになる
使用頻度は減って
使用用途はほとんど分岐くらい

レジスタの数も少ないと問題だろ?
フラグも同じ
2019/11/30(土) 15:46:59.54ID:WebQyLi7
>>596 の話
ADCを続けるのにどうやって他の命令を実行する?
そもそも記述が出来ない
1000回ADCを行うなら
その間にフラグ更新命令を一切記述出来ない
CPUの最適化以前の問題
2019/11/30(土) 15:49:53.66ID:WebQyLi7
RCR/RCL による多倍長の1ビットシフトなんか最悪だ
依存性が途切れないので1クロックに1回しか出来ない

ADCもSBBも依存性が途切れないから
もっと頭の良い方法を使うんだけど
2019/11/30(土) 15:50:53.74ID:WebQyLi7
まあそもそも可読性とか言ってる時点で話にならん
アセンブラなんか使わないで素直にCで書いてな
2019/11/30(土) 15:53:07.85ID:AFPNe0zJ
ID:zk5zlAHcはID:4DEcYZGMやID:zk5zlAHcなんて擁護すると見識を疑われるぞ!

>>604
うわっ、酷っ!
>レジスタの数も少ないと問題だろ?
>フラグも同じ
結局これしか理解できてないから壮大な妄想を展開してたのかよw
2019/11/30(土) 15:54:01.77ID:AFPNe0zJ
ID:4DEcYZGMとID:WebQyLi7
だった
2019/11/30(土) 15:54:06.44ID:WebQyLi7
大体、
普段多倍長なんか使わんだろ
頻繁に演算でフラグを使う場面ていつだよ?
64bitありゃ99%は問題ないだろ
フラグの用途のほとんどが条件分岐だろうが

SIMDにフラグが無い理由を少しは考えろ
2019/11/30(土) 15:57:07.46ID:AFPNe0zJ
>>606
>RCR/RCL による多倍長の1ビットシフトなんか最悪だ
>依存性が途切れないので1クロックに1回しか出来ない
これも突っ込みどころのある発言w
どうして依存性が切れないのか、やっぱり理解できてない
2019/11/30(土) 15:59:39.71ID:WebQyLi7
1000ワードの多倍長加算を100個

データはキャュシュにあるとして
どんなコードにする?

糞遅いコードしか書けないだろうね
2019/11/30(土) 16:00:43.39ID:WebQyLi7
>>611
多倍長の1ビットシフト
って意味わからない?

そこから説明しないとダメ?
2019/11/30(土) 16:01:19.45ID:WebQyLi7
レベルが低すぎて会話にならない
2019/11/30(土) 16:05:29.45ID:AFPNe0zJ
どうして依存性が切れないのか理解できてないのがレベルが低いって言ってんだよ
WAW依存とか理解してるか?
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を使ったシフトも同じ
2019/11/30(土) 16:32:15.54ID:WebQyLi7
これはコンパイラの最適化やCPUのアウトオブオーダーでは解決出来ない

アセンブラで書こうがCで書こうが
頭が悪い人にとってはこれが限界
2019/11/30(土) 17:01:55.28ID:rGr6foFe
ただの荒らしにマジレスしても疲れるだけだよ
2019/11/30(土) 17:22:23.36ID:xhEM6aVw
そういうキャリーが必要な、前の計算結果が必要で依存する計算は、
キャリーがないCPUだとさらに効率は悪化するから例として意味がない。

128bitを1bit左シフト
SHL
RCL

mips64だとどういうコードですか?
andi
srl
sll
sll
or
みたいな? 大変でつね。他に便利な命令でもあるんですかね?RISCに対して失礼な質問でしたね^^
2019/11/30(土) 17:32:16.88ID:8+8CeiWg
> 頭が悪い人にとってはこれが限界

ほんとそのまんまでわらた
依存性を減らす、隠蔽するのが最適化の肝
ちょっとは考えてね
2019/11/30(土) 17:36:12.41ID:8+8CeiWg
当然>>616のままじゃダメ
MIPSだろうがARMだろうがx86だろうが

工夫するんだよ
その工夫がキャリーフラグを使うとちょっと難しい

いや、
そもそも>>616のままでも制御をフラグ無しでやらないといけないから大変だね
遅い命令を使って保存しておく????
2019/11/30(土) 17:37:47.29ID:rGr6foFe
それって1bit以外のシフトならどうなるの?
2019/11/30(土) 17:45:13.95ID:8+8CeiWg
キャリーフラグの人は多倍長1ビットシフトを繰り返す
普通の人はバレルシフタをうまく使う
2019/11/30(土) 17:52:27.94ID:21OIT27J
一度に1000回もADCするとかよほど暇なアプリケーションなのだろうな
マイコンのADCと仮定すると速い物でも計0.5〜1msecくらいかかるだろう
単に移動平均が欲しいだけなら必要なコストはADC変換1回に付き加減算各1回+メモリアクセスですむんだし
2019/11/30(土) 19:36:02.39ID:8+8CeiWg
何で移動平均が突然?
多倍長の話だろ?

そもそも多倍長なんか普通は使わない
普通は64bitで収まる
だからキャリーフラグを使った足し算なんて普通はしない

キャリーフラグを使った演算は
8bit、16bit時代の、遅いCPU時代のなごりだ
2019/11/30(土) 21:00:54.84ID:xhEM6aVw
>>625
ARMは最初から32bitだし、AVRに至っては32bit時代に新規に開発された8bitCPUだし、
共に市場で成功したRISC CPUである。キミがキャリー使わないのは単にコード書かないからに過ぎない。
Cでif文でも書けばコンパイラが必然的に使ってしまう。
2019/11/30(土) 21:04:16.02ID:xhEM6aVw
>>623
さて、キミの任意bitシフトのバレルシフタのコードみせてもらおう。verilogでいいよ。
2019/11/30(土) 22:20:20.00ID:jbs9cucn
>>626
ARMはともかくAVRって
1個ずつ順番にやるしかないCPUは>>616で良いんだよ
このコードが糞なのはスーパースカラーの話
つまり、現代の高速CPU全て

スーパースカラーでどうやって速くするか
SIMDでどうやって速くするか
ベクトルコンピューターでどうやって速くするか

頭が悪いと>>616が限界
2019/11/30(土) 22:23:01.70ID:jbs9cucn
>>627
書いてることがトンチンカン
>>623をもう一回読みなおしてみようか
2019/11/30(土) 22:31:00.07ID:AFPNe0zJ
>そもそも多倍長なんか普通は使わない
とか書いておきながら100個の多倍長とか、ずいぶんと極端な例を持ち出すことw

ローテート命令が依存性を抱えてる理由に即答することもできずに、別の話題で誤魔化そうとしてるから
あんたがアウトオブオーダーをまともに理解してないのは確定的だな
これで究極の最適化だのほざいてたのかよw
2019/11/30(土) 22:33:09.34ID:jbs9cucn
煽れば答えがもらえると思うのは間違い
レベルが違い過ぎて話にならんから無視するぞ
2019/11/30(土) 22:34:55.48ID:FaWuMeWQ
>>607
「話にならん」が口癖の人には悪いけど、可読性は非常に大事。
MASMならマクロが使えるから、定型的な処理はマクロで書いておけばその処理が必要な部分は1行で書けるし、
if-elseマクロを使うだけでもだいぶわかりやすくなる。
http://shaw.la.coocan.jp/masm/control.php

特に他人が書いたソースをいじらないといけないときは可読性大事。修正や変更の手間が大幅に省ける。
2019/11/30(土) 22:37:24.82ID:xhEM6aVw
>>629
頓珍漢なレスにマジレスしてやったらそれを理解せず頓珍漢なこと言われてもだな。
それともMIPSは1bitシフトとバレルシフタと命令が別なのかい? RISCなのにw

> キャリーフラグの人は多倍長1ビットシフトを繰り返す
> 普通の人はバレルシフタをうまく使う

とにかく煽りではなくコード見せてよ。
バレルシフタを上手くつかった任意bitのシフトを。キミは普通の人なんだろ?
2019/11/30(土) 22:44:56.42ID:AFPNe0zJ
>>631
俺が答えを知らないんじゃなくて、お前が知らないんだろw
煽られても答えることが出来ないからって、レベルが違うとかw
恥も上塗りしまくれば目立たなくなるともお思いで?
wwww
2019/12/01(日) 01:20:15.72ID:npZTl1ra
100個の多倍長の配列なんて極端な例を持ち出さなきゃ、普通にアウトオブオーダー実行されるってことだよな
でなきゃそんな欠陥CPUなんてスパコンで使うはずないだろうに

mov edx, 1

xor eax, eax
キャリーを変化させたい命令
cmovc eax, edx
ってやりゃ、キャリーフラグの結果をGPRに反映できるはずだから、以降は機械語の制限による
依存は切り離せるはずだよな
2019/12/01(日) 01:44:07.93ID:npZTl1ra
cmovcじゃなく、
adc eax, 0
でもいいか
こっちの方が余計なレジスタ使わなくていいし
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
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:
2019/12/01(日) 02:44:18.13ID:rpSiZ7Ms
arm64だとこう
  x1:x0←x1:x0 << w2
  mov   w4, 63
  sub   w5, w4, w2
  lsr   x4, x0, 1
  sub   w3, w2, #64
  cmp   w3, 0
  lsl   x1, x1, x2
  lsr   x4, x4, x5
  orr   x1, x4, x1
  lsl   x4, x0, x3
  csel  x1, x4, x1, ge
  lsl   x0, x0, x2
  csel  x0, x0, xzr, lt
2019/12/01(日) 11:18:31.61ID:sKSeAmO2
そういえば最近のx86は
典型的な条件ジャンプは
内部的に比較やテストとあわせて1個のuOP命令になる

内部的にはMIPSの条件ジャンプをリッチにした感じ
比較とブランチで2命令も費やしてたら
パフォーマンス的に問題だからね

分岐でも演算でも、
キャリーフラグの出番はもうほとんどない
2019/12/01(日) 12:25:49.37ID:rpSiZ7Ms
Intel® 64 and IA-32 ArchitecturesOptimization Reference Manual
64-ia-32-architectures-optimization-manual.pdf
248966-033June 2016
109ページ目3-12の3.4.2.2 Optimizing for Macro-fusionに書かれてるね
リンクはNGワードで貼れなかったのでググッてね
2019/12/01(日) 12:29:50.17ID:rpSiZ7Ms
最新のやつだと貼れるかな?
https://software.intel.com/sites/default/files/managed/9e/bc/64-ia-32-architectures-optimization-manual.pdf
130ページ目3-12の3.4.2.2 Optimizing for Macro-fusionに書かれてるね
643デフォルトの名無しさん
垢版 |
2019/12/01(日) 13:38:02.71ID:N3Tb7oIA
>>640
キミが有名なMIPS君かw
2019/12/01(日) 13:45:41.30ID:npZTl1ra
>>640
jcc命令の説明
77 cb JA rel8 D Valid Valid Jump short if above (CF=0 and ZF=0).
73 cb JAE rel8 D Valid Valid Jump short if above or equal (CF=0).
キャリーフラグは使われてるぞ
2019/12/01(日) 13:47:09.12ID:npZTl1ra
ちょっと見難いね
JA Jump short if above (CF=0 and ZF=0).
JAE Jump short if above or equal (CF=0).
2019/12/01(日) 14:13:26.95ID:rpSiZ7Ms
>>644
>>642にマクロフィユージョンで内部的に1命令になるって書いてあるじゃん
JA、JAEはTEST、AND、CMP、ADD、SUBがマクロフュージョン可能なようだね
2019/12/01(日) 14:21:48.12ID:npZTl1ra
>>646
間にフラグをいじらない他の命令挟むとフュージョン出来ないはずだし、
フュージョンした場合でも、フラグレジスタも一緒に更新するので、フラグを使うと考えていい
演算回路のキャリー信号を使わないということは、まず考えられないよ
2019/12/01(日) 14:22:09.47ID:p3Z7Nr0h
>>643
MIPS君が何者かしらんが
おれはx86/ARM/MIPS全てを愛する男
SH/RL78/C6000/C2000/PIC/AVR/RX
などなどいろいろと経験あり
2019/12/01(日) 14:23:53.09ID:p3Z7Nr0h
RISC-Vは開発経験ないです
2019/12/01(日) 14:24:03.34ID:rpSiZ7Ms
>>647
内部的に1命令のμOPsになるのに何言ってるの?
2019/12/01(日) 14:31:19.10ID:rpSiZ7Ms
CFとZFのみを使うやつはCMPでマクロフィユージョン可能のようだね
2019/12/01(日) 14:33:05.42ID:npZTl1ra
>>650
なんで噛みついて来るんだ?
間にmovが入ったりしてもフュージョンすると思ってる?
こういう時は普通にフラグレジスタを参照するぞ
2019/12/01(日) 14:40:26.09ID:npZTl1ra
確かマクロフュージョンって、実行キューに入るときには別々のμOPsに分解されたはず
整数パイプと分岐ユニット用にね
2019/12/01(日) 15:01:21.03ID:rpSiZ7Ms
>>653
また分割しちゃったらマクロフィユージョンで統合した意味なくないか?

>>646のExampleのところにこう書かれてるね
Sandy Bridge microarchitecture enables more arithmetic and logic instructions
to macro-fuse with conditional branches.
In loops where the ALU ports are already congested,
performing one of these macrofusions can relieve the pressure,
as the macro-fused instruction consumes only port 5, instead of an ALU
port plus port 5.
2019/12/01(日) 15:30:27.00ID:npZTl1ra
>>654
そういや、分解されるのはマイクロフュージョンの方だったか?
ポート5でALUと分岐ユニットが一緒になってるから間違ってたかも、ゴメン
でも、フュージョン出来ない書き方も可能なはずなので、フラグ参照するパターンもあるはずだよ
2019/12/01(日) 22:01:05.21ID:N3Tb7oIA
>>648
MIPSマシン、RISC-Vマシンなんて手に入らないからMIPSの話はMIPSスレでよくね? ここ初心者板だよ? 

ほんとこんなところでスレチのMIPS、RISC-Vニュースコピペしないでくれるかな。
ここム板だよ。荒らしと変わらないよ。興味あるならMIPSスレのほう除くでしょ。
2019/12/01(日) 22:35:59.05ID:rpSiZ7Ms
MIPSならPIC32がMIPS
RISC-Vのマイコンもすぐに手に入るようなった

https://www.switch-science.com/catalog/5707/
https://www.switch-science.com/catalog/5946/
https://www.switch-science.com/catalog/5700/
2019/12/01(日) 22:42:54.44ID:N3Tb7oIA
MIPS君って人の話聞かない人なんだな。
2019/12/01(日) 22:47:20.58ID:rpSiZ7Ms
RISC-VのSBC

HiFive1
http://select.marutsu.co.jp/list/detail.php?id=351

MIPSのSBCもあることはあるぞ

Imagination Technologies Creator Ci40 IoT 開発 ボード
https://jp.rs-online.com/web/p/processor-microcontroller-development-kits/1253306/

Imagination Technologies Creator Ci20 Linux/Android 開発 ボード
https://jp.rs-online.com/web/p/processor-microcontroller-development-kits/1253305/
2019/12/01(日) 22:54:42.00ID:rpSiZ7Ms
RISC-Vが手に入るようになったからトランジスタ技術2019年11月号や
インターフェースの2019年12月号で特集やってるわけだが
2019/12/01(日) 23:20:53.64ID:rpSiZ7Ms
RISC-VはMaix Bit、MaixdunoならArduinoで使えるのでかなり敷居は低くなったぞ
価格も3000円から4000円程度
これらがダメというならAVRの話もダメということになるね
そもそもこんなに荒れたのは
>>529->>539の話があって、>>540を貼ったらAVR信者が食いついて荒らしただけ
2019/12/01(日) 23:26:12.86ID:npZTl1ra
MIPS君?って、
>フラグはアウトオブオーダーの妨げになるし
>並列化も出来ないから
って主張が完全崩壊して、当分は現れないんじゃないかな…
アウトオブオーダーの知識も色々とおかしくて、あれで最適化の講釈する度胸はないだろ
2019/12/01(日) 23:36:04.53ID:rpSiZ7Ms
複数の人間の書き込みを同一人物視する人は頭おかしい
2019/12/01(日) 23:38:09.37ID:Tj+WH/IS
Cortex-M7やRXv3と競合するRISC-Vコア搭載のASICはよこい
2019/12/02(月) 00:11:51.31ID:RIgVO6ZZ
>>657
とりあえず買ってみる
2019/12/02(月) 19:22:50.55ID:kmSxls5X
AVX512に慣れると、
他のコアがチープに見える
特に32bit〜64bitの中途半端なヤツが

京の次のヤツのARMってSIMD何ビットだっけ?
ちょっと遊んでみたい
2019/12/02(月) 19:24:16.67ID:kmSxls5X
PICみたいな超チープなやつは
それはそれで楽しいんだけど
2019/12/03(火) 10:01:22.58ID:kL4hKD0u
チープというか変態すぎる。
2019/12/03(火) 11:32:29.72ID:g2sdmHcp
チープなやつは大体どれも変態だよ

C言語で記述不可能なのもあるから
PICは変態な中でもまだマシな方
2019/12/13(金) 00:51:18.32ID:7tDteGkj
PICは命令数が少ないから大好き
アセンブラは慣れれば問題ない
2019/12/13(金) 18:29:36.28ID:1MRTxPI4
GOTOで発作が起きます
2019/12/13(金) 19:12:30.36ID:QuzLYYNu
gotoアレルギー多いよな
2019/12/13(金) 20:44:16.76ID:tYi2uLeR
JP じゃないの
2019/12/14(土) 02:42:04.15ID:er8xklWG
日本では特に間違って伝わってるからなぁ
想像するのがC言語やスクリーンエディタ機能組み込まれてた頃のBASICのGOTOっていう
2019/12/14(土) 07:46:40.45ID:6lStbnNy
古臭くて役にも立たない話をするのが大好きで、LARGEADDRESSAWAREやキャリーフラグで
大爆死した誰かさんがしれっと戻って来てるのか?
2019/12/14(土) 12:04:43.11ID:teIen0U1
GOTOがというより抽象化に関する教育の不足が問題なんじゃ
昨今のプログラミング教育も本質が見えているようには見えない
2019/12/14(土) 12:07:38.82ID:2PNj6NH4
歪んだ教育のせいで
ループ内で意地でも
continue, break, goto
を使わない人がいる

その為、
無駄な変数を使ったり
ループ条件が複雑になったり
本末転倒
678デフォルトの名無しさん
垢版 |
2019/12/14(土) 13:25:49.98ID:TlZt0bii
breakにラベル指定出来なかったのはCの設計ミスやろ
2019/12/14(土) 13:34:05.64ID:JwYnIOEa
多重ループはgotoで抜ける
って事だろうけどね
gotoはラベル名を考えるのが面倒

break 2;
で2段階breakが出来ると良い
2019/12/14(土) 13:39:05.39ID:qH7KRmrQ
>>679
N88-BASICのような時代は、行番号があったからラベル名を考える必要が
なく楽だった。MASMの場合は、プロシージャローカルのラベル名が
使えたので、lab1:, lab2: のようにしておくと楽だった。
Cの場合、見た目的に「ラベルが浮く」現象が起きるのも問題。
2019/12/14(土) 13:44:49.72ID:qH7KRmrQ
BASICの場合、
1000 xxx
1010 if xxx > xxx then 1200
1020 xxx
1030 goto 1300
1200 xxx
のように書けて至って楽だったし、見た目も綺麗に書けた。

アセンブラの場合も
xxx proc near
   mov yyy,zzz
lab1:
   call aaa
lab2:
   dec ecx
   jnz bbb
xxx endp
のように命令の前には tab(0x09) 付けされ、ラベルと区別が付き易いのでとても
綺麗に書けた。ところがCの場合は、ラベルと命令の見た目のバランスが悪いので
問題となった。構造上の汚さよりもその問題の方が大きい。
2019/12/14(土) 13:48:16.80ID:JwYnIOEa
>>680
@@:
jmp @b
jmp @f
も便利

Cで「ラベルが浮く」?
ラベルに慣れてないだけでは?
2019/12/14(土) 13:50:15.98ID:JwYnIOEa
ラベルはインデントを1個左にずらす
case文と同じように
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況