スレ立てるまでもない質問はここで 156匹目

レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
垢版 |
2021/02/20(土) 17:17:54.73ID:56yjs2OO
この板はプログラムを作る人のための板です。
あらゆる質問はまず
スレ立てるまでもない質問はここで
スレにしてください。

【前スレ】
スレ立てるまでもない質問はここで 155匹目
https://mevius.5ch.net/test/read.cgi/tech/1606439237/

次スレは>>980が立てること
2021/06/17(木) 13:47:27.99ID:xNFu7F8M
wikipediaでx86を調べて
そこでわからない単語を片っ端から
wikipediaやググってみたら?
2021/06/17(木) 15:36:52.47ID:rI4RyUy5
PS2やPS3のゲームを改造したいのになぜx86なのか。それが判らない
2021/06/17(木) 17:14:07.40ID:ooZzmu2N
>>972の内容は、まぁexeだしレジスタ名称とかニーモニックからX86だろうけど
アセンブラって基本的な部分はある程度同じなんで、いきなりX86とかMIPSとか
PPCとかフル機能のCPUのアセンブラから勉強しようとするとすぐに詰むよ

アセンブラを眺める程度ならHP拾い読みでも良いけど、開発とかを行うならば
もう少し簡単なPICとかのアセンブラをしっかり勉強してからの方が近道だと思うよ

そして根本的な話でPS2とかPS3とかの開発をしたいならば別にアセンブラを
使わなくてもC++のSDKとか開発されているので、よほど低レベルな部分の
開発を行うのでなければアセンブラ必要ないよ

ps2 sdkとかps3 sdkで検索してみて
981デフォルトの名無しさん
垢版 |
2021/06/17(木) 19:05:41.15ID:JkvBpemd
>>980
コンパイラが吐いたフル機能使いまくりのコードを
逆アセして読み解こうとしている天才がいるんだよ
アセンブラの命令すらマニュアル無しで解読する能力の持ち主なんだ
すごいだろ?
2021/06/17(木) 19:46:46.81ID:mjY/8PfV
チートの程度にもよるけど、やねうらおの書籍「解析魔法少女 美咲ちゃん」は参考になったよ
2021/06/17(木) 20:28:00.57ID:IuszbmHt
その昔の素朴なCPUだと16進ダンプを直読みする強者が
2021/06/18(金) 11:44:25.11ID:DLEaHmmC
日本では、情報処理試験の仮想アセンブラ・CASL2 が基本。
世界では、LLVM のサイトで、仮想アセンブラを学ぶ

x86 なら、OllyDbg・やねうらお・うさぴょんが有名
985デフォルトの名無しさん
垢版 |
2021/06/18(金) 12:03:44.02ID:7Huy+AZL
漏れもやねうらは好きな方だが
初心者ならやねうらより
ISBN 4839909865
2021/06/18(金) 12:32:20.21ID:194Cy0xO
CASLはどうみても68系ベースの簡略版で、68プログラマーでもあった俺はインストラクション眺めただけで楽勝だった
2021/06/18(金) 12:35:29.33ID:/PK0wqbC
gyazoとかいうゴミで画像貼んな
988デフォルトの名無しさん
垢版 |
2021/06/18(金) 13:39:45.56ID:WThQkiL7
func(list):
_if list[0]=a:
__for i in list:
____conv_a(i)
____write(i)

_elif list[1]=b:
__for i in list:
____conv_b(i)
____write(i)

空撃ちしたときと本番で処理違うみたいなので
こう書きがちなんだけど、よくないなっていう自覚があります
配列→微妙に異なる処理→出力 のとき、どう書いたら上手いですか?
2021/06/18(金) 13:46:33.95ID:Jo75oGSb
>>988
仕様がクソならコードもクソにしかならん
そういう状況になるのはたいてい抽象化がヘタクソ
990デフォルトの名無しさん
垢版 |
2021/06/18(金) 14:15:44.89ID:ru+U9KL5
python で代入文は if の条件に描けないぞ
2021/06/18(金) 14:18:50.64ID:H41XlXnl
>>988
Pythonぽいけどdefないし等号も違うから何の言語か分からなかった
Pythonみたいに関数を変数に入れられる言語なら最初に適用する関数を決めるとすっきりしそう

func(list):
 # 適用する処理(conv)を設定
 if list[0] == a:
  conv = conv_a
 elif list[1] == b:
  conv = conv_b

 # リストに処理を適用して出力
 for i in list:
  conv(i)
  write(i)

aとbでlistのインデクスが違うのが気になったけど無視する
2021/06/18(金) 14:22:04.15ID:EhVYURYt
変数名に list 使うな

func(l):
if l[0] != a && l[1] != b: return
f = (conv_a, conv_b)[l[0] != a]
for i in l:
f(i)
write(i)
2021/06/18(金) 14:27:15.83ID:rMpkljNE
>>990
正確には
Pythonでは代入は文なので、条件式には入れられない。
Cなどでは代入が式なので条件式にも入れられる。
2021/06/18(金) 14:40:28.04ID:dSkONN1n
>>988
>配列→微妙に異なる処理→出力 のとき、どう書いたら上手いですか?

高階関数を使う
995デフォルトの名無しさん
垢版 |
2021/06/18(金) 15:01:02.87ID:WThQkiL7
すいませんpythonスレじゃないので曖昧な書き方のがいいのかなと思って…
def func(l):
_if l[0][0] == 0:
__for i in l:
___write(conv_a(i))

_elif[0][0] == 1:
__for i in l:
___write(conv_b(i))

です.ほんとは各処理もうちょっと関数続くんですけど
いずれにせよ途中だけが微妙に違うほぼ同じ処理をきれいに書きたい

>>991
おー.見やすいです
996デフォルトの名無しさん
垢版 |
2021/06/18(金) 15:45:26.03ID:PuJK3NPt
>>991 は仕様(実装)にバグがある
2021/06/18(金) 17:03:01.08ID:194Cy0xO
うん、>>992のようにチェック入れるべきだね
でもreturnより例外吐くべきでは?
2021/06/18(金) 18:04:22.88ID:tKtuqq6N
責務の分離が上手くできてない関数の中身だけいじくり回してもキレイにはならないよ
呼び出し側やデータ構造なんかも含めて考え直さないと
2021/06/18(金) 18:38:56.71ID:9pPslW7o
メインルーチンとサブルーチンを明確に意識して
メインルーチンは処理の流れがわかるように
サブルーチンはテストして結果が出ればよしと分ける
1000デフォルトの名無しさん
垢版 |
2021/06/18(金) 21:22:28.52ID:FdpzvR5V
>>998
もっと具体的に言わないと役に立たないと思うが
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 118日 4時間 4分 34秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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