初心者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
630デフォルトの名無しさん
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:
639デフォルトの名無しさん
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
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
640デフォルトの名無しさん
2019/12/01(日) 11:18:31.61ID:sKSeAmO2 そういえば最近のx86は
典型的な条件ジャンプは
内部的に比較やテストとあわせて1個のuOP命令になる
内部的にはMIPSの条件ジャンプをリッチにした感じ
比較とブランチで2命令も費やしてたら
パフォーマンス的に問題だからね
分岐でも演算でも、
キャリーフラグの出番はもうほとんどない
典型的な条件ジャンプは
内部的に比較やテストとあわせて1個のuOP命令になる
内部的にはMIPSの条件ジャンプをリッチにした感じ
比較とブランチで2命令も費やしてたら
パフォーマンス的に問題だからね
分岐でも演算でも、
キャリーフラグの出番はもうほとんどない
641デフォルトの名無しさん
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ワードで貼れなかったのでググッてね
64-ia-32-architectures-optimization-manual.pdf
248966-033June 2016
109ページ目3-12の3.4.2.2 Optimizing for Macro-fusionに書かれてるね
リンクはNGワードで貼れなかったのでググッてね
642デフォルトの名無しさん
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に書かれてるね
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
キミが有名なMIPS君かw
644デフォルトの名無しさん
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).
キャリーフラグは使われてるぞ
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).
キャリーフラグは使われてるぞ
645デフォルトの名無しさん
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).
JA Jump short if above (CF=0 and ZF=0).
JAE Jump short if above or equal (CF=0).
646デフォルトの名無しさん
2019/12/01(日) 14:13:26.95ID:rpSiZ7Ms647デフォルトの名無しさん
2019/12/01(日) 14:21:48.12ID:npZTl1ra >>646
間にフラグをいじらない他の命令挟むとフュージョン出来ないはずだし、
フュージョンした場合でも、フラグレジスタも一緒に更新するので、フラグを使うと考えていい
演算回路のキャリー信号を使わないということは、まず考えられないよ
間にフラグをいじらない他の命令挟むとフュージョン出来ないはずだし、
フュージョンした場合でも、フラグレジスタも一緒に更新するので、フラグを使うと考えていい
演算回路のキャリー信号を使わないということは、まず考えられないよ
648デフォルトの名無しさん
2019/12/01(日) 14:22:09.47ID:p3Z7Nr0h649デフォルトの名無しさん
2019/12/01(日) 14:23:53.09ID:p3Z7Nr0h RISC-Vは開発経験ないです
650デフォルトの名無しさん
2019/12/01(日) 14:24:03.34ID:rpSiZ7Ms >>647
内部的に1命令のμOPsになるのに何言ってるの?
内部的に1命令のμOPsになるのに何言ってるの?
651デフォルトの名無しさん
2019/12/01(日) 14:31:19.10ID:rpSiZ7Ms CFとZFのみを使うやつはCMPでマクロフィユージョン可能のようだね
652デフォルトの名無しさん
2019/12/01(日) 14:33:05.42ID:npZTl1ra653デフォルトの名無しさん
2019/12/01(日) 14:40:26.09ID:npZTl1ra 確かマクロフュージョンって、実行キューに入るときには別々のμOPsに分解されたはず
整数パイプと分岐ユニット用にね
整数パイプと分岐ユニット用にね
654デフォルトの名無しさん
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.
また分割しちゃったらマクロフィユージョンで統合した意味なくないか?
>>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.
655デフォルトの名無しさん
2019/12/01(日) 15:30:27.00ID:npZTl1ra >>654
そういや、分解されるのはマイクロフュージョンの方だったか?
ポート5でALUと分岐ユニットが一緒になってるから間違ってたかも、ゴメン
でも、フュージョン出来ない書き方も可能なはずなので、フラグ参照するパターンもあるはずだよ
そういや、分解されるのはマイクロフュージョンの方だったか?
ポート5でALUと分岐ユニットが一緒になってるから間違ってたかも、ゴメン
でも、フュージョン出来ない書き方も可能なはずなので、フラグ参照するパターンもあるはずだよ
656デフォルトの名無しさん
2019/12/01(日) 22:01:05.21ID:N3Tb7oIA >>648
MIPSマシン、RISC-Vマシンなんて手に入らないからMIPSの話はMIPSスレでよくね? ここ初心者板だよ?
ほんとこんなところでスレチのMIPS、RISC-Vニュースコピペしないでくれるかな。
ここム板だよ。荒らしと変わらないよ。興味あるならMIPSスレのほう除くでしょ。
MIPSマシン、RISC-Vマシンなんて手に入らないからMIPSの話はMIPSスレでよくね? ここ初心者板だよ?
ほんとこんなところでスレチのMIPS、RISC-Vニュースコピペしないでくれるかな。
ここム板だよ。荒らしと変わらないよ。興味あるならMIPSスレのほう除くでしょ。
657デフォルトの名無しさん
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/
RISC-Vのマイコンもすぐに手に入るようなった
https://www.switch-science.com/catalog/5707/
https://www.switch-science.com/catalog/5946/
https://www.switch-science.com/catalog/5700/
658デフォルトの名無しさん
2019/12/01(日) 22:42:54.44ID:N3Tb7oIA MIPS君って人の話聞かない人なんだな。
659デフォルトの名無しさん
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/
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/
660デフォルトの名無しさん
2019/12/01(日) 22:54:42.00ID:rpSiZ7Ms RISC-Vが手に入るようになったからトランジスタ技術2019年11月号や
インターフェースの2019年12月号で特集やってるわけだが
インターフェースの2019年12月号で特集やってるわけだが
661デフォルトの名無しさん
2019/12/01(日) 23:20:53.64ID:rpSiZ7Ms662デフォルトの名無しさん
2019/12/01(日) 23:26:12.86ID:npZTl1ra MIPS君?って、
>フラグはアウトオブオーダーの妨げになるし
>並列化も出来ないから
って主張が完全崩壊して、当分は現れないんじゃないかな…
アウトオブオーダーの知識も色々とおかしくて、あれで最適化の講釈する度胸はないだろ
>フラグはアウトオブオーダーの妨げになるし
>並列化も出来ないから
って主張が完全崩壊して、当分は現れないんじゃないかな…
アウトオブオーダーの知識も色々とおかしくて、あれで最適化の講釈する度胸はないだろ
663デフォルトの名無しさん
2019/12/01(日) 23:36:04.53ID:rpSiZ7Ms 複数の人間の書き込みを同一人物視する人は頭おかしい
664デフォルトの名無しさん
2019/12/01(日) 23:38:09.37ID:Tj+WH/IS Cortex-M7やRXv3と競合するRISC-Vコア搭載のASICはよこい
665デフォルトの名無しさん
2019/12/02(月) 00:11:51.31ID:RIgVO6ZZ >>657
とりあえず買ってみる
とりあえず買ってみる
666デフォルトの名無しさん
2019/12/02(月) 19:22:50.55ID:kmSxls5X AVX512に慣れると、
他のコアがチープに見える
特に32bit〜64bitの中途半端なヤツが
京の次のヤツのARMってSIMD何ビットだっけ?
ちょっと遊んでみたい
他のコアがチープに見える
特に32bit〜64bitの中途半端なヤツが
京の次のヤツのARMってSIMD何ビットだっけ?
ちょっと遊んでみたい
667デフォルトの名無しさん
2019/12/02(月) 19:24:16.67ID:kmSxls5X PICみたいな超チープなやつは
それはそれで楽しいんだけど
それはそれで楽しいんだけど
668デフォルトの名無しさん
2019/12/03(火) 10:01:22.58ID:kL4hKD0u チープというか変態すぎる。
669デフォルトの名無しさん
2019/12/03(火) 11:32:29.72ID:g2sdmHcp チープなやつは大体どれも変態だよ
C言語で記述不可能なのもあるから
PICは変態な中でもまだマシな方
C言語で記述不可能なのもあるから
PICは変態な中でもまだマシな方
670デフォルトの名無しさん
2019/12/13(金) 00:51:18.32ID:7tDteGkj PICは命令数が少ないから大好き
アセンブラは慣れれば問題ない
アセンブラは慣れれば問題ない
671デフォルトの名無しさん
2019/12/13(金) 18:29:36.28ID:1MRTxPI4 GOTOで発作が起きます
672デフォルトの名無しさん
2019/12/13(金) 19:12:30.36ID:QuzLYYNu gotoアレルギー多いよな
673デフォルトの名無しさん
2019/12/13(金) 20:44:16.76ID:tYi2uLeR JP じゃないの
674デフォルトの名無しさん
2019/12/14(土) 02:42:04.15ID:er8xklWG 日本では特に間違って伝わってるからなぁ
想像するのがC言語やスクリーンエディタ機能組み込まれてた頃のBASICのGOTOっていう
想像するのがC言語やスクリーンエディタ機能組み込まれてた頃のBASICのGOTOっていう
675デフォルトの名無しさん
2019/12/14(土) 07:46:40.45ID:6lStbnNy 古臭くて役にも立たない話をするのが大好きで、LARGEADDRESSAWAREやキャリーフラグで
大爆死した誰かさんがしれっと戻って来てるのか?
大爆死した誰かさんがしれっと戻って来てるのか?
676デフォルトの名無しさん
2019/12/14(土) 12:04:43.11ID:teIen0U1 GOTOがというより抽象化に関する教育の不足が問題なんじゃ
昨今のプログラミング教育も本質が見えているようには見えない
昨今のプログラミング教育も本質が見えているようには見えない
677デフォルトの名無しさん
2019/12/14(土) 12:07:38.82ID:2PNj6NH4 歪んだ教育のせいで
ループ内で意地でも
continue, break, goto
を使わない人がいる
その為、
無駄な変数を使ったり
ループ条件が複雑になったり
本末転倒
ループ内で意地でも
continue, break, goto
を使わない人がいる
その為、
無駄な変数を使ったり
ループ条件が複雑になったり
本末転倒
678デフォルトの名無しさん
2019/12/14(土) 13:25:49.98ID:TlZt0bii breakにラベル指定出来なかったのはCの設計ミスやろ
679デフォルトの名無しさん
2019/12/14(土) 13:34:05.64ID:JwYnIOEa 多重ループはgotoで抜ける
って事だろうけどね
gotoはラベル名を考えるのが面倒
break 2;
で2段階breakが出来ると良い
って事だろうけどね
gotoはラベル名を考えるのが面倒
break 2;
で2段階breakが出来ると良い
680デフォルトの名無しさん
2019/12/14(土) 13:39:05.39ID:qH7KRmrQ >>679
N88-BASICのような時代は、行番号があったからラベル名を考える必要が
なく楽だった。MASMの場合は、プロシージャローカルのラベル名が
使えたので、lab1:, lab2: のようにしておくと楽だった。
Cの場合、見た目的に「ラベルが浮く」現象が起きるのも問題。
N88-BASICのような時代は、行番号があったからラベル名を考える必要が
なく楽だった。MASMの場合は、プロシージャローカルのラベル名が
使えたので、lab1:, lab2: のようにしておくと楽だった。
Cの場合、見た目的に「ラベルが浮く」現象が起きるのも問題。
681デフォルトの名無しさん
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の場合は、ラベルと命令の見た目のバランスが悪いので
問題となった。構造上の汚さよりもその問題の方が大きい。
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の場合は、ラベルと命令の見た目のバランスが悪いので
問題となった。構造上の汚さよりもその問題の方が大きい。
682デフォルトの名無しさん
2019/12/14(土) 13:48:16.80ID:JwYnIOEa683デフォルトの名無しさん
2019/12/14(土) 13:50:15.98ID:JwYnIOEa ラベルはインデントを1個左にずらす
case文と同じように
case文と同じように
684デフォルトの名無しさん
2019/12/14(土) 16:23:54.51ID:qH7KRmrQ >>683
こんな感じですか?
{
{
ラベル名1:
if ( xxx < yyy ) {
普通の文1;
ラベル名2:
普通の文2;
}
}
}
こんな感じですか?
{
{
ラベル名1:
if ( xxx < yyy ) {
普通の文1;
ラベル名2:
普通の文2;
}
}
}
685デフォルトの名無しさん
2019/12/14(土) 16:57:20.57ID:er8xklWG caseって用途は限定されてるけど、飛び先ラベルそのものよな?
686デフォルトの名無しさん
2019/12/14(土) 17:00:28.16ID:JwYnIOEa >>684
そうそう
そうそう
687デフォルトの名無しさん
2019/12/14(土) 17:27:51.24ID:IqAY6EvB 実装が楽なのだろうが条件スキップ命令が嫌い。
688デフォルトの名無しさん
2019/12/14(土) 22:37:51.56ID:JwYnIOEa 好きとか嫌いとかどうでも良い
689デフォルトの名無しさん
2019/12/14(土) 22:59:07.71ID:uFdEOStu 最初に言い出したのは誰なのかしら
690デフォルトの名無しさん
2019/12/15(日) 01:17:17.22ID:f1vDrgvb PICのアセンブラは非人間的で嫌われている
691デフォルトの名無しさん
2019/12/15(日) 11:22:32.97ID:ymerGKQi アセンブラは元々CPUに寄せてるのが普通で、人間に合わせるなんてこと考えてません。
人間がわかりやすいようにしたければマクロで補うなり、プリプロセッサ作るなどして工夫すればいいんですよ。
人間がわかりやすいようにしたければマクロで補うなり、プリプロセッサ作るなどして工夫すればいいんですよ。
692デフォルトの名無しさん
2019/12/15(日) 11:26:35.35ID:mSzJWPy5 PICくらいで非人道的とか
もっと変態CPUはいくらでもあるってのに
もっと変態CPUはいくらでもあるってのに
693デフォルトの名無しさん
2019/12/15(日) 13:07:08.62ID:o9m7qUoD ハーバードだろ
694デフォルトの名無しさん
2019/12/15(日) 13:31:23.47ID:ymerGKQi >>692
でもね、プロセッサ変わる度に覚え直すのは面倒だしつらいだろ。
面倒なものや難しいものをそのまま力業で押し通そうとするのはやっぱり頭悪いやり方。
賢い人なら、もっと頭使って少しでも使いやすく、わかりやすく変えていくもんだと思うんだよね。
でもね、プロセッサ変わる度に覚え直すのは面倒だしつらいだろ。
面倒なものや難しいものをそのまま力業で押し通そうとするのはやっぱり頭悪いやり方。
賢い人なら、もっと頭使って少しでも使いやすく、わかりやすく変えていくもんだと思うんだよね。
695デフォルトの名無しさん
2019/12/15(日) 17:23:58.99ID:5kgRNS4L RXのアセンブラは判りやすいと思う
696デフォルトの名無しさん
2019/12/15(日) 17:38:53.02ID:5sPbacoo >>694
C言語
C言語
697デフォルトの名無しさん
2019/12/15(日) 19:26:43.84ID:ymerGKQi >>696
Cが対応しているプロセッサならそれ使えばいいけど、同じ処理をアセンブラで書くのとCで書いたのでは実行ファイルのサイズが大きく違う。
Cは余計なランタイムルーチンがリンクされて無駄に太る。Cで書いてもアセンブラで書くのとほとんど同じサイズになる処理系があればその方が良い。
そして、なければ作るしかない。覚えにくいニーモニックを頑張って覚えるくらいなら、そういう処理系を作ることに労力を使ったほうがいいんじゃないかな。
Cが対応しているプロセッサならそれ使えばいいけど、同じ処理をアセンブラで書くのとCで書いたのでは実行ファイルのサイズが大きく違う。
Cは余計なランタイムルーチンがリンクされて無駄に太る。Cで書いてもアセンブラで書くのとほとんど同じサイズになる処理系があればその方が良い。
そして、なければ作るしかない。覚えにくいニーモニックを頑張って覚えるくらいなら、そういう処理系を作ることに労力を使ったほうがいいんじゃないかな。
698デフォルトの名無しさん
2019/12/15(日) 19:42:57.22ID:5kgRNS4L 今時マイコンですら結構な容量のフラッシュROMを積んでいるし
高級言語に由来するフットプリント増が問題になるケースは少ないと思うが
高いリアルタイム性が要求されたり重い処理をするケースはアセンブラで書く場合がある
高級言語に由来するフットプリント増が問題になるケースは少ないと思うが
高いリアルタイム性が要求されたり重い処理をするケースはアセンブラで書く場合がある
699デフォルトの名無しさん
2019/12/15(日) 20:20:04.05ID:5sPbacoo >>697
需要がないプロセッサは作らない
それだけ
変態アーキテクチャは理由があってそうなってる訳だし
普通のCPUならC/C++で使いやすいように整備されてる
Cランタイムサイズが問題になるCPUだと
ランタイムも小さく出来るのが普通
(printf、malloc を使わないなど)
需要がないプロセッサは作らない
それだけ
変態アーキテクチャは理由があってそうなってる訳だし
普通のCPUならC/C++で使いやすいように整備されてる
Cランタイムサイズが問題になるCPUだと
ランタイムも小さく出来るのが普通
(printf、malloc を使わないなど)
700デフォルトの名無しさん
2019/12/15(日) 20:21:43.99ID:jswNPg7r 8bitCPUにFlashROM 32KBにRAMが1KB、広すぎて天国のようだ
701デフォルトの名無しさん
2019/12/15(日) 20:22:30.32ID:5sPbacoo >>700
だよね
だよね
702デフォルトの名無しさん
2019/12/15(日) 20:28:26.55ID:5sPbacoo 小規模DSPは比較的アセンブラを良く使う
703デフォルトの名無しさん
2019/12/18(水) 03:42:06.43ID:mwLPhsOw ラーメンには豚のセアブラをよく使う
704デフォルトの名無しさん
2020/01/14(火) 15:59:36.64ID:uFo9dhko 68000君は居ないようだな。残念だ
C言語も神が作ったのではない、breakやcontinueがどこに飛ぶのか分からん時はある。
入門書を信じ込んだ狂信者、原理主義者のような、痛い目に会ってない素人は結構いる。
C言語も神が作ったのではない、breakやcontinueがどこに飛ぶのか分からん時はある。
入門書を信じ込んだ狂信者、原理主義者のような、痛い目に会ってない素人は結構いる。
705デフォルトの名無しさん
2020/01/14(火) 19:13:53.43ID:VTSZmZmV >>704
> breakやcontinueがどこに飛ぶのか分からん時はある。
そんな経験はないなあ。普通はCの仕様通りに動く。
Cの仕様通りに動かないとしたらそのCコンパイラのバグだと思いますよ。
もし本当にわけがわからない動作をしたときはテストプログラムを書いてどう動くか調べたり
アセンブラソース出力して見てみればいい。
> breakやcontinueがどこに飛ぶのか分からん時はある。
そんな経験はないなあ。普通はCの仕様通りに動く。
Cの仕様通りに動かないとしたらそのCコンパイラのバグだと思いますよ。
もし本当にわけがわからない動作をしたときはテストプログラムを書いてどう動くか調べたり
アセンブラソース出力して見てみればいい。
706デフォルトの名無しさん
2020/01/15(水) 10:28:18.25ID:NnMYiXUN ソースを追う気がなくなるからわからなくなるって意味だろ
707デフォルトの名無しさん
2020/01/15(水) 12:54:18.67ID:mdjDjCL2 素朴な疑問なんだが逆アセンブラのラベルってどうやって生成されるの?
レジスタ間接ジャンプのジャンプ先アドレスなんて実行してみないと判らないような・・・
レジスタ間接ジャンプのジャンプ先アドレスなんて実行してみないと判らないような・・・
708デフォルトの名無しさん
2020/01/15(水) 22:23:13.85ID:NnMYiXUN PEヘッダ内にあるImage baseとかじゃね win32の場合だけど
709デフォルトの名無しさん
2020/01/16(木) 05:34:03.43ID:I1VMveuP >>705
>そんな経験はないなあ。普通はCの仕様通りに動く。
多重ループ脱出やifやなんやらのネストでどこに行くか分からなくなる事は無かったんか
Cの経験浅い人は、そういうことが分からないんだろうな。
>そんな経験はないなあ。普通はCの仕様通りに動く。
多重ループ脱出やifやなんやらのネストでどこに行くか分からなくなる事は無かったんか
Cの経験浅い人は、そういうことが分からないんだろうな。
710デフォルトの名無しさん
2020/01/16(木) 07:53:03.25ID:oL142J5t インデントがぐちゃぐちゃなパターンは昔はよく見た。viのせいだろうな。
711デフォルトの名無しさん
2020/01/16(木) 08:04:26.22ID:TEF1jMG0 今も見る
712デフォルトの名無しさん
2020/01/16(木) 23:36:50.30ID:GgmseacB >>709
複雑なものを複雑なままコードにするからそうなる。
多重ループと言ってもせいぜい2重か3重だし、それ以上深いループになるようなコードだったら
そもそも考え方が悪いからシンプルになるように書き直す。中身をサブルーチンに追い出して、
ループ構造と脱出が一目でわかるようにしても良い。
ifのネストも同様に、細部の条件を洗い出してパラメータを変えて呼び出すだけで動くようにする。
そうすればif文を見なくていいしそれぞれ1行で呼び出せる。
とにかくできるだけ構造がシンプルでわかりやすくなるように工夫することだよ。
複雑なものを複雑なままコードにするからそうなる。
多重ループと言ってもせいぜい2重か3重だし、それ以上深いループになるようなコードだったら
そもそも考え方が悪いからシンプルになるように書き直す。中身をサブルーチンに追い出して、
ループ構造と脱出が一目でわかるようにしても良い。
ifのネストも同様に、細部の条件を洗い出してパラメータを変えて呼び出すだけで動くようにする。
そうすればif文を見なくていいしそれぞれ1行で呼び出せる。
とにかくできるだけ構造がシンプルでわかりやすくなるように工夫することだよ。
713デフォルトの名無しさん
2020/01/18(土) 09:17:15.53ID:bQ1xI4/b714デフォルトの名無しさん
2020/02/13(木) 22:12:36.79ID:z5jUasH9 最近パスタ食べてないな
715デフォルトの名無しさん
2020/03/04(水) 14:16:54.94ID:b3xLS7HK 究極の変態ってどんな感じなんだろうな
パズル的で面白そうだが…
パズル的で面白そうだが…
716デフォルトの名無しさん
2020/05/14(木) 17:51:17.70ID:f1vNNG/3 まったくの初心者なのですが、アセンブリ言語を理解できるようになりたいです。
入門サイトなどを探しても自分が探しているCPUを取り扱っている物は見つかりませんでした。
まだCPUの仕組みもよく理解していないような状態なので、種類に拘らずそのような入門サイトなどで勉強した方がいいのでしょうか。
一通り学習を終えた後、別のCPUの言語でもすぐ対応できますか?
iosアプリのリバースエンジニアリング をしてみたいと思っているのでarm64のコードを理解できるようになりたいです。(用語などの使い方が間違っていたらすみません。)
入門サイトなどを探しても自分が探しているCPUを取り扱っている物は見つかりませんでした。
まだCPUの仕組みもよく理解していないような状態なので、種類に拘らずそのような入門サイトなどで勉強した方がいいのでしょうか。
一通り学習を終えた後、別のCPUの言語でもすぐ対応できますか?
iosアプリのリバースエンジニアリング をしてみたいと思っているのでarm64のコードを理解できるようになりたいです。(用語などの使い方が間違っていたらすみません。)
717デフォルトの名無しさん
2020/05/14(木) 17:59:48.21ID:xR/PZA9p マルチ死ね
718デフォルトの名無しさん
2020/05/14(木) 19:21:25.82ID:FSEZeoAj 情報処理資格の教科書から、始めた方がよい。
CASL 2 という仮想アセンブラもある
仮想アセンブラとは、各メーカーごとの実際のアセンブラではなくて、抽象的なもの
仮想アセンブラでは、LLVM が最も有名
CASL 2 という仮想アセンブラもある
仮想アセンブラとは、各メーカーごとの実際のアセンブラではなくて、抽象的なもの
仮想アセンブラでは、LLVM が最も有名
719デフォルトの名無しさん
2020/05/15(金) 10:21:28.00ID:QqRlTuRs 動機を当ててやるか。ゲームを改造して無双したいのだろう。
だがそんなの対策済みで無駄なことだ。
だがそんなの対策済みで無駄なことだ。
720デフォルトの名無しさん
2020/06/17(水) 20:16:42.08ID:mLHHLomt 実プロセッサのアセンブラを学ぶのに仮想アセンブラって役立つか?
LLVMなんてレジスタ数無制限だしスタック無しでも処理を書けるだろ
実際のプロセッサでそれは現実的ではないしスタック操作はボトルネックにもなっている
LLVMなんてレジスタ数無制限だしスタック無しでも処理を書けるだろ
実際のプロセッサでそれは現実的ではないしスタック操作はボトルネックにもなっている
721デフォルトの名無しさん
2020/06/18(木) 06:16:16.86ID:WpoR9KQA ARM64のアセンブラだとこんなサイトあるよ
http://www.mztn.org/dragon/arm6400idx.html
http://www.mztn.org/dragon/arm6400idx.html
722デフォルトの名無しさん
2020/06/21(日) 16:12:29.75ID:rRP2z2l8 MPUそのものは仮想でもエミュがあってそこそこ実用になるなら良いんじゃない?
723デフォルトの名無しさん
2020/06/21(日) 16:13:57.40ID:pgbZYzU2 比べるのもアレだけど
極端な話 BrainF*ck も仮想みたいなもんだろ
極端な話 BrainF*ck も仮想みたいなもんだろ
724デフォルトの名無しさん
2020/06/30(火) 20:45:59.73ID:2de2B/rP コンパイラにアセンブラ出力させてみた結果
8bitのアセンブラが簡単なんて嘘
Cソース
https://pastebin.com/bWfLhn8Y
8bit MSX-C Ver1.1 アセンブラ出力
https://pastebin.com/Bzt3fFaX
16bit Turbo-C Ver1.5 アセンブラ出力
https://pastebin.com/y82ifpxs
64bit Ubuntu 18.04 x86_64 gcc-7.4.0 アセンブラ出力
https://pastebin.com/PTuEv5uL
64bit Ubuntu 20.04 ARM64 gcc-9.3.0 アセンブラ出力
https://pastebin.com/9N4eKWeg
8bitのアセンブラが簡単なんて嘘
Cソース
https://pastebin.com/bWfLhn8Y
8bit MSX-C Ver1.1 アセンブラ出力
https://pastebin.com/Bzt3fFaX
16bit Turbo-C Ver1.5 アセンブラ出力
https://pastebin.com/y82ifpxs
64bit Ubuntu 18.04 x86_64 gcc-7.4.0 アセンブラ出力
https://pastebin.com/PTuEv5uL
64bit Ubuntu 20.04 ARM64 gcc-9.3.0 アセンブラ出力
https://pastebin.com/9N4eKWeg
725デフォルトの名無しさん
2020/06/30(火) 20:50:56.99ID:2de2B/rP ちなみにgccでは
int func01() __attribute__((noinline,noclone));
とやってインライン展開を抑制してます
int func01() __attribute__((noinline,noclone));
とやってインライン展開を抑制してます
726デフォルトの名無しさん
2020/06/30(火) 21:02:04.38ID:e6PapWOV 8bitの方がソフト規模が小さいから簡単
727デフォルトの名無しさん
2020/06/30(火) 21:05:11.63ID:dU7zENbL728デフォルトの名無しさん
2020/06/30(火) 21:11:37.45ID:e6PapWOV 単純な命令しかなくて命令数も圧倒的に少ない8bit
複雑な命令がたくさんあって命令数も1000を越える64bit
複雑な命令がたくさんあって命令数も1000を越える64bit
729デフォルトの名無しさん
2020/07/01(水) 04:08:07.95ID:g4YauoQu コンパイラの変換が下手
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「おこめ券は米以外の食品も買える。効果的な活用を」 地元で農水相 [山形県] [少考さん★]
- 【速報】「女芸人No.1決定戦 THE W」9代目女王にニッチェ! 7年ぶり3度目で悲願の優勝 [牛丼★]
- いじめ後遺症 15年前のトラウマに苦悩する当事者「夢の中に出てくる」「された側は一生ものの傷」 [♪♪♪★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 東京の自販機そばに金塊4200万円分、何者かに持ち去られる…札幌の50代が8000万円振り込んだ後に上京して被害 [どどん★]
- 今年の流行語大賞 『働いて働いて働いてまいります』が受賞で不快感… 過労自殺の遺族らが会見「家族にむち打つような行為だ」 [冬月記者★]
- 可愛すぎるJK見つけた
- お前「趣味……?ないですね。無趣味です」ぼく「ずっと2chしてるんだから2chが趣味でいいじゃん」前「?」
- ボア・ハンコック(31)「ルフィ……❤結婚したい……❤」
- クズ「勉強頑張らなかった奴は一生DQNと一緒に肉体労働しろ」☚勉強頑張れるのも環境と巡り合わせなんだが? [783475554]
- 隕石の落ちたところに俺が立ってたら
- 🏡パン🍞つー✌まる👌見え👊😅👊
