前スレ
http://pc11.2ch.net/test/read.cgi/tech/1187079488/
探検
アセンブラ 13
■ このスレッドは過去ログ倉庫に格納されています
2011/08/28(日) 15:24:40.59
173デフォルトの名無しさん
2014/10/24(金) 23:21:06.42ID:60xLGkt4 >>157
名前(オペランド)だけでいい、オペレータまで日本語化する必要はない
名前(オペランド)だけでいい、オペレータまで日本語化する必要はない
174デフォルトの名無しさん
2014/10/24(金) 23:31:49.40ID:9fhBZmJB MOV EAX,1234+5678 ←オペランド
↑ ↑ ↑
ニ オ オ
モ ペ ペ
ニ ラ レ
ッ ン |
ク ド タ
↑ ↑ ↑
ニ オ オ
モ ペ ペ
ニ ラ レ
ッ ン |
ク ド タ
175デフォルトの名無しさん
2014/10/24(金) 23:52:02.58ID:60xLGkt4 おいおい、"EAX" も "1234+5678" もオペランドだろう、オペレータはまずかったなオペコードというべきだったか‥
176デフォルトの名無しさん
2014/10/25(土) 00:09:13.63ID:zlhvJX1z >>175
0: a1 00 1b 00 00 MOV EAX,1234+5678 ←オペランド
↑ ↑ ↑ ↑ ↑
オ オ ニ オ オ
フ ペ モ ペ ペ
セ コ ニ ラ レ
ッ | ッ ン |
ト ド ク ド タ
0: a1 00 1b 00 00 MOV EAX,1234+5678 ←オペランド
↑ ↑ ↑ ↑ ↑
オ オ ニ オ オ
フ ペ モ ペ ペ
セ コ ニ ラ レ
ッ | ッ ン |
ト ド ク ド タ
177デフォルトの名無しさん
2014/10/25(土) 04:17:33.76ID:SJUwgBZk >174のオペレータって+を指してんじゃ
178デフォルトの名無しさん
2014/10/25(土) 05:39:41.70ID:OBw5xvhC 馬鹿には無理
179デフォルトの名無しさん
2014/10/25(土) 18:11:01.93ID:gl6O+QH9180デフォルトの名無しさん
2014/10/25(土) 18:16:38.82ID:zlhvJX1z >>179
http://www.sourceware.org/binutils/docs-2.10/as_6.html
> 6.2.2 Operators
> Operators are arithmetic functions, like + or %. Prefix operators are followed by an argument.
http://www.sourceware.org/binutils/docs-2.10/as_6.html
> 6.2.2 Operators
> Operators are arithmetic functions, like + or %. Prefix operators are followed by an argument.
181デフォルトの名無しさん
2014/10/25(土) 18:27:07.14ID:Q/xi2e+W 恥ずかし///
182デフォルトの名無しさん
2014/10/26(日) 13:12:48.49ID:eoLX8RNk >>180
だからそれはアセンブラ層で扱うオペレータだとなんどいったら‥
だからそれはアセンブラ層で扱うオペレータだとなんどいったら‥
183デフォルトの名無しさん
2014/10/26(日) 13:19:22.74ID:gMYGq5V7 レジスタも実際はオペコードに含まれてるケースも多いので
EAX がオペランドになってるのは違和感がある
EAX がオペランドになってるのは違和感がある
184デフォルトの名無しさん
2014/10/26(日) 15:59:27.98ID:hUa4ZeCn185デフォルトの名無しさん
2014/10/26(日) 16:01:08.50ID:hUa4ZeCn186デフォルトの名無しさん
2014/10/26(日) 16:05:19.65ID:eoLX8RNk マシン語レベルで言っていると思われ
187デフォルトの名無しさん
2014/10/26(日) 16:14:01.73ID:hUa4ZeCn マシン語の話はスレ違ですね。
188デフォルトの名無しさん
2014/10/26(日) 18:05:55.37ID:eAcs35DC ああ、x86のオペランドがAX固定の命令みたいな奴のことを指してるのかな。
そのへんは命令のネーミングの問題という感じもあって、(仮に名づけるなら)
ADDAXとかMOVAXみたいな名前の別の命令にしちゃったりすることもあるので、
まぁあまり厳密に定義はできないから、議論する意味はあまりないね。
そのへんは命令のネーミングの問題という感じもあって、(仮に名づけるなら)
ADDAXとかMOVAXみたいな名前の別の命令にしちゃったりすることもあるので、
まぁあまり厳密に定義はできないから、議論する意味はあまりないね。
189デフォルトの名無しさん
2014/10/27(月) 06:34:42.02ID:Yycbgmpy 例えばMC6800のLDAAとかADDBみたいなののこと?
あれはニモニックの一部にレジスタ名が含まれてるだけでオペランドとは違うよ。
あれはニモニックの一部にレジスタ名が含まれてるだけでオペランドとは違うよ。
190デフォルトの名無しさん
2014/10/27(月) 09:36:01.62ID:wK4QYAC1 ちょっと何言ってんのか分からん
191デフォルトの名無しさん
2014/10/27(月) 12:12:42.89ID:VoSGhOqg x86で、アセンブリ言語では「ADD AX, 1」の「ADD」はオペコード(インストラクション、命令)、
AXと1はオペランド(引数)というように明確に分離できる。
機械語では 0x05 0x0001 となるが、ここでADDを意味する部分とAXを意味する部分は
0x05に一緒に入ってしまっていて分離できない(正確には5のLSBでALとAXのどちらかを
選択しているけど)。
結論としては、オペランド(の1部)がハードコードされた命令という奴があるので、
オペコードとオペランドの区切りはかならずしも明確ではない、ということになる。
AXと1はオペランド(引数)というように明確に分離できる。
機械語では 0x05 0x0001 となるが、ここでADDを意味する部分とAXを意味する部分は
0x05に一緒に入ってしまっていて分離できない(正確には5のLSBでALとAXのどちらかを
選択しているけど)。
結論としては、オペランド(の1部)がハードコードされた命令という奴があるので、
オペコードとオペランドの区切りはかならずしも明確ではない、ということになる。
192デフォルトの名無しさん
2014/10/27(月) 18:03:20.01ID:EJb5dfUa 命令セットのリファレンスにAVX512のことも追加されてたのか
https://software.intel.com/sites/default/files/managed/59/6a/319433-021.pdf
https://software.intel.com/sites/default/files/managed/59/6a/319433-021.pdf
193デフォルトの名無しさん
2014/11/29(土) 14:11:28.92ID:m0w/xFX/194デフォルトの名無しさん
2014/11/29(土) 15:58:54.98ID:FcCIdxC+ アセンブラとマシン語が混ざって元々意味の無い話がやっぱり意味の無い話で回ってるね
更に遡ってくと元は日本語アセンブラか。。。本当バカ臭い
更に遡ってくと元は日本語アセンブラか。。。本当バカ臭い
195デフォルトの名無しさん
2015/02/15(日) 17:06:10.18ID:eXfPDQZo 基本情報技術者試験でアセンブラ勉強しはじめた。
午後の選択問題で、アセンブラが簡単だと聞いたが…。
いまのところわけわからん。
午後の選択問題で、アセンブラが簡単だと聞いたが…。
いまのところわけわからん。
196デフォルトの名無しさん
2015/02/15(日) 17:24:08.94ID:1vS2ESBG https://www.jitec.ipa.go.jp/1_13download/shiken_yougo_ver2_2.pdf
>3.プログラム言語
>@ 基本情報技術者試験において,ソフトウェア開発分野に関する試験問題に出題するプログラム
>言語は,C,COBOL,Java,アセンブラ言語(CASLU)の 4 言語とする
CASLなんて役に立たないもの勉強なんてしないで普段使ってるものか将来使いそうなの勉強したほう
いいんじゃない
# FORTRANて今ないんだなー
>3.プログラム言語
>@ 基本情報技術者試験において,ソフトウェア開発分野に関する試験問題に出題するプログラム
>言語は,C,COBOL,Java,アセンブラ言語(CASLU)の 4 言語とする
CASLなんて役に立たないもの勉強なんてしないで普段使ってるものか将来使いそうなの勉強したほう
いいんじゃない
# FORTRANて今ないんだなー
197デフォルトの名無しさん
2015/02/15(日) 18:30:34.63ID:Qwk5nQv8 二つやらないといけないそうだからな‥C と Java か‥
198デフォルトの名無しさん
2015/02/15(日) 18:30:56.51ID:bX6frV1s アセンブラはセンター試験の数IIb並みに簡単
199デフォルトの名無しさん
2015/03/07(土) 09:37:26.18ID:G+snOoOp 文法がってだけでアルゴリズムは別だけどな
200デフォルトの名無しさん
2015/03/08(日) 09:27:59.15ID:/MgTL3zQ センター試験とか簡単なことを難しそうに見せて
というか問題(の意図)を判り難くして回り道させて
出題者側が時間稼ぎしてる感じしかしない
というか問題(の意図)を判り難くして回り道させて
出題者側が時間稼ぎしてる感じしかしない
201デフォルトの名無しさん
2015/03/08(日) 19:21:25.65ID:/s2hhMUc センターの問題はスレチである
202デフォルトの名無しさん
2015/04/21(火) 16:40:55.21ID:3mVW08s5 gccの-Sオプションでアセンブラファイルを作成したら日本語文字列が
.ascii "%d\202\252\223\374\227\315\202\263\202\352\202\334\202\265\202\275\12\0"
みたいになったんですがこれは何でしょうか
ascii 日本語で検索しても出て来ません
.ascii "%d\202\252\223\374\227\315\202\263\202\352\202\334\202\265\202\275\12\0"
みたいになったんですがこれは何でしょうか
ascii 日本語で検索しても出て来ません
203デフォルトの名無しさん
2015/04/21(火) 17:06:23.70ID:hJeBiy6y >>202
「が入力されました」をShift_JISでエンコードして各バイトがASCII範囲外なので8進表記したもの
「が入力されました」をShift_JISでエンコードして各バイトがASCII範囲外なので8進表記したもの
204デフォルトの名無しさん
2015/04/21(火) 17:23:12.27ID:3mVW08s5 >>203
ありがとうございます!
ありがとうございます!
205デフォルトの名無しさん
2015/04/22(水) 01:59:38.10ID:ZIHXAufW >>203
よく分かったな
よく分かったな
206デフォルトの名無しさん
2015/09/18(金) 17:48:02.84ID:wbP5mHQw mov eax, cr0
or eax, 1
mov cr0, eax
or eax, 1
mov cr0, eax
207デフォルトの名無しさん
2015/09/18(金) 19:23:40.98ID:HCQXhwcr jmp $+2
208デフォルトの名無しさん
2016/03/29(火) 18:34:55.24ID:jDRKX2rB マイコンで初めてアセンブラ書いてるけどスパゲッティおいしい
209デフォルトの名無しさん
2016/07/01(金) 15:31:07.82ID:EjQpOL5h @
add dword ptr[i], 1
と
A
mov eax, dword ptr[i]
add eax, 1
mov dword ptr[i], eax
ってどう違いますか?
i++を逆アセするとAになりますが
インアセンブラで@と書いても一見同じようですが
3倍の速度ってわけではないですよね
add dword ptr[i], 1
と
A
mov eax, dword ptr[i]
add eax, 1
mov dword ptr[i], eax
ってどう違いますか?
i++を逆アセするとAになりますが
インアセンブラで@と書いても一見同じようですが
3倍の速度ってわけではないですよね
210デフォルトの名無しさん
2016/07/01(金) 15:39:37.74ID:r+VXjd7G コンパイラが2のようなコードを吐くのは、そっちの方がトータルで速いから
デコーダだの複雑命令だの
並列実行だのoooだの
パイプラインだのマイクロ命令だの
そういうのが理由
端的に言えば、1の命令は複雑すぎるので
分解して複数命令にして実行したり使えるデコーダが限られたり、制限が多い
2は、比較的CPUの内部命令に近いので、他の命令と同時並列に実行したり出来る
デコーダだの複雑命令だの
並列実行だのoooだの
パイプラインだのマイクロ命令だの
そういうのが理由
端的に言えば、1の命令は複雑すぎるので
分解して複数命令にして実行したり使えるデコーダが限られたり、制限が多い
2は、比較的CPUの内部命令に近いので、他の命令と同時並列に実行したり出来る
211デフォルトの名無しさん
2016/07/01(金) 16:33:41.91ID:wNtMwO0s なんで inc にならないし
212デフォルトの名無しさん
2016/07/02(土) 02:29:37.38ID:YYGT6hvg213デフォルトの名無しさん
2016/07/02(土) 03:34:14.20ID:m5Sb4+fO レイテンシがどうのとかそういうレベルの話じゃなくて
単純にVC++のデバッグビルドだからじゃねーの
単純にVC++のデバッグビルドだからじゃねーの
214デフォルトの名無しさん
2016/07/03(日) 22:50:54.17ID:HbQeSe9b x=x+1
x++
x++
215デフォルトの名無しさん
2016/07/09(土) 00:41:22.05ID:2eBD2sS9 CPUをFPGAで実装してみたらわかると思うけど
一つの命令の中でメモリをリードした後ライトする命令をサポートするISAと
そういう命令は持たないで一つの命令の中ではメモリはリードするだけかライトするだけのISAでは実装の複雑度はかなり違うよ
一つの命令の中でメモリをリードした後ライトする命令をサポートするISAと
そういう命令は持たないで一つの命令の中ではメモリはリードするだけかライトするだけのISAでは実装の複雑度はかなり違うよ
216デフォルトの名無しさん
2016/07/09(土) 00:52:38.73ID:2eBD2sS9 もちろん排他制御のためにどんなISAでもtest and set的な命令は持つ必要があるけど
主眼は使用頻度が高い演算とか操作の話だからね
主眼は使用頻度が高い演算とか操作の話だからね
217デフォルトの名無しさん
2016/07/09(土) 12:51:47.63ID:7UqK6Tzf 確かにmemory to memoryのオペレーションはRISCだと命令長が合わないから無理だよね。
無理やりやるならレジスタAのアドレスをロードしてincしてストアするとかになるから命令が複雑すぎるかもな。
無理やりやるならレジスタAのアドレスをロードしてincしてストアするとかになるから命令が複雑すぎるかもな。
218デフォルトの名無しさん
2016/07/09(土) 18:48:07.98ID:J471aLuE memory mapped register を持った RISC もあったような
219デフォルトの名無しさん
2016/07/09(土) 20:01:55.81ID:xdnyrY55 レジスタに書くとメモリに転送されんの?知らんかった。
命令のサイクルとかむちゃくちゃになりそうだな。CPUのコアじゃなくて、SOCとかで勝手に拡張した擬似レジスタなのかな。
命令のサイクルとかむちゃくちゃになりそうだな。CPUのコアじゃなくて、SOCとかで勝手に拡張した擬似レジスタなのかな。
220デフォルトの名無しさん
2016/07/10(日) 02:43:35.42ID:SHJN9j5A 6502のことじゃないの?
221名無しさん@そうだ選挙に行こう! Go to vote!
2016/07/10(日) 12:42:16.29ID:BKklAOmg 6502はそういうレジスタないよ。アドレッシングが癖があるけど。
ちょうど今FPGAで6502組んでるとこなんだよね。
ちょうど今FPGAで6502組んでるとこなんだよね。
222名無しさん@そうだ選挙に行こう! Go to vote!
2016/07/10(日) 19:39:37.06ID:EY1v+Nkp 6809かな
223デフォルトの名無しさん
2016/07/10(日) 20:11:16.85ID:BKklAOmg サンクス!
昔のCPU好きなんだよね。調べて見よっと
昔のCPU好きなんだよね。調べて見よっと
224デフォルトの名無しさん
2016/07/10(日) 21:50:59.66ID:hJGonyaW いろいろいい加減な型番出てるが
TIのTMS9900調べとけ
TIのTMS9900調べとけ
225デフォルトの名無しさん
2016/07/10(日) 22:09:22.43ID:BKklAOmg なんかいっぱい出てきたな。。。
見てみるよ。あざす
見てみるよ。あざす
226デフォルトの名無しさん
2016/08/05(金) 16:24:48.98ID:VZHGn81X 話の流れをぶった切って申し訳ないんだが、
armv8のインラインアセンブラとかの質問をここでしてもいい?
armv8のインラインアセンブラとかの質問をここでしてもいい?
227デフォルトの名無しさん
2016/08/05(金) 16:26:36.74ID:VZHGn81X レスの日付を見てなかった(^^;
上の質問は取り消します、さいならw
上の質問は取り消します、さいならw
228デフォルトの名無しさん
2016/08/05(金) 18:54:34.14ID:OgtmDK03 別にいいと思うけどさようなら
229デフォルトの名無しさん
2016/08/25(木) 23:40:32.30ID:Eq6gD2XE 新しく出てたプログラム本を何気なく手にとって読んでみたらアセンブリ言語中心の内容だったな
タイトル忘れた
タイトル忘れた
230デフォルトの名無しさん
2016/08/26(金) 19:17:48.18ID:MFwM+FIX231片山博文MZ ◆T6xkBnTXz7B0
2016/08/26(金) 19:30:01.69ID:c/QRPG4e 64ビット時代のアセンブラの入門書がないかな?
232デフォルトの名無しさん
2016/08/26(金) 21:36:42.60ID:NyhYMJrx 命令長が違うだけで32ビットのニーモニックとあんま変わらんよ。
入門書読みたけりゃ32ビットので勉強して、リファレンスマニュアルを探せばいいと思う。
64ビットの固有の命令とかコントロールレジスタの事なんかは入門書では書く必用ないしね。
入門書読みたけりゃ32ビットので勉強して、リファレンスマニュアルを探せばいいと思う。
64ビットの固有の命令とかコントロールレジスタの事なんかは入門書では書く必用ないしね。
233デフォルトの名無しさん
2016/08/27(土) 05:42:44.15ID:Dx6e3moq プログラムの不思議を解く―実力派プログラマのための教養としてのアセンブラ入門
234デフォルトの名無しさん
2016/08/27(土) 08:42:35.36ID:SmFG8gRK ク ク || プ //
ス ク ス | | │ //
/ ス | | ッ // ク ク ||. プ //
/ // ス ク ス _ | | │ //
/ ̄ ̄\ / ス ─ | | ッ //
/ _ノ .\ / //
| ( >)(<) ___
. | ⌒(__人__) ./ ⌒ ⌒\
| ` Y⌒l / (>) (<)\
. | . 人__ ヽ / ::::::⌒(__人__)⌒ \
ヽ }| | | ` Y⌒ l__ |
ヽ ノ、| | \ 人_ ヽ /
. /^l / / ,─l ヽ \
ス ク ス | | │ //
/ ス | | ッ // ク ク ||. プ //
/ // ス ク ス _ | | │ //
/ ̄ ̄\ / ス ─ | | ッ //
/ _ノ .\ / //
| ( >)(<) ___
. | ⌒(__人__) ./ ⌒ ⌒\
| ` Y⌒l / (>) (<)\
. | . 人__ ヽ / ::::::⌒(__人__)⌒ \
ヽ }| | | ` Y⌒ l__ |
ヽ ノ、| | \ 人_ ヽ /
. /^l / / ,─l ヽ \
235デフォルトの名無しさん
2016/08/28(日) 18:25:25.47ID:TLCNAGVS はい
236デフォルトの名無しさん
2016/09/02(金) 14:49:44.53ID:LW5U/QZl うんこしてきていい?
237デフォルトの名無しさん
2016/09/02(金) 15:37:28.76ID:tIJhbCeG 逝っトイレ
238デフォルトの名無しさん
2016/11/12(土) 13:36:24.90ID:5D/kJ823 「ほら吹き男爵の本を5冊調べました(中略)
ブーツの紐を引っ張って湖の底から脱出する
という話は、書かれていません(中略)
ブートストラップ(bootstrap)とは直訳すれば、ブーツのひもである。しかし、
独力でやるという派生した意味を持ち、そこから、
コンピュータが電源投入時に自動的にOSを読み込む方式を指したり、
コンパイラが自分自身を記述したりすることを指したり(中略)
bootstrapを靴紐とした誤訳である。
Bootstrapとはブーツを履くときにブーツを引っ張る上げるためのつまみ革
ブートストラップを引っ張って湖の底から脱出する
というエピソードは書かれていない。しかし類似の話として
馬ごと沼に落ちた Munchausen が手で自分の髪の毛をつかんで自分自身と馬とを引っ張り上げて沼から脱出する
というエピソ−ドが書かれている(挿絵つき)。岩波文庫版」
http://suzuki-tokuhisa.com/ushigome/hinoue.html
2000/12/24(Sun)
ブーツの紐を引っ張って湖の底から脱出する
という話は、書かれていません(中略)
ブートストラップ(bootstrap)とは直訳すれば、ブーツのひもである。しかし、
独力でやるという派生した意味を持ち、そこから、
コンピュータが電源投入時に自動的にOSを読み込む方式を指したり、
コンパイラが自分自身を記述したりすることを指したり(中略)
bootstrapを靴紐とした誤訳である。
Bootstrapとはブーツを履くときにブーツを引っ張る上げるためのつまみ革
ブートストラップを引っ張って湖の底から脱出する
というエピソードは書かれていない。しかし類似の話として
馬ごと沼に落ちた Munchausen が手で自分の髪の毛をつかんで自分自身と馬とを引っ張り上げて沼から脱出する
というエピソ−ドが書かれている(挿絵つき)。岩波文庫版」
http://suzuki-tokuhisa.com/ushigome/hinoue.html
2000/12/24(Sun)
239デフォルトの名無しさん
2017/03/22(水) 18:34:09.35ID:PmucqYS5 https://www.amazon.co.jp/dp/4839954747/
https://pbs.twimg.com/media/CMHpkNQWwAAfWJq.png
この本買ったんだけど中身は文章とソースコードしかなかった
https://pbs.twimg.com/media/CMHpkNQWwAAfWJq.png
この本買ったんだけど中身は文章とソースコードしかなかった
240デフォルトの名無しさん
2017/03/22(水) 20:13:36.84ID:wpBrYFTt 当たり前w
241デフォルトの名無しさん
2017/04/13(木) 18:15:02.80ID:VLmLig3K test
242デフォルトの名無しさん
2017/06/06(火) 19:25:33.15ID:6Hy4ZEQ3 FreeBSDi386
バックスペースの挙動の再現?方法が知りたいのですが
ioctlにてBSが無効化?している状態においてどのようにすればいいのでしょうか?
現状の挙動は
BSだけだとカーソル左移動のみ
エスケープシーケンスの"[[P"併用では似た挙動はするがコンソール左端を認識しない為 左端以降右を削除してしまう
バックスペースの挙動の再現?方法が知りたいのですが
ioctlにてBSが無効化?している状態においてどのようにすればいいのでしょうか?
現状の挙動は
BSだけだとカーソル左移動のみ
エスケープシーケンスの"[[P"併用では似た挙動はするがコンソール左端を認識しない為 左端以降右を削除してしまう
243デフォルトの名無しさん
2017/06/06(火) 20:07:44.00ID:ykMKOrap 左移動、スペース、左移動では?
244デフォルトの名無しさん
2017/06/06(火) 20:30:28.44ID:MUdbHmDP >>239
そんな表紙じゃないと売れないのかねぇ
そんな表紙じゃないと売れないのかねぇ
245デフォルトの名無しさん
2017/06/06(火) 22:48:42.93ID:6Hy4ZEQ3 243
無効化(terminal自体の設定変更 Cでいう?termiosで変更)してるのでそれでは駄目です
無効化(terminal自体の設定変更 Cでいう?termiosで変更)してるのでそれでは駄目です
246デフォルトの名無しさん
2017/06/06(火) 22:58:03.59ID:6Hy4ZEQ3 因みにその場合の(243の)挙動は
カーソル移動と削除(スペースの入力と表示)のみ行われてカーソル右はそのままとなります
ABCD
↓
A D
のようにカーソル右の文字が左スクロールしません
カーソル移動と削除(スペースの入力と表示)のみ行われてカーソル右はそのままとなります
ABCD
↓
A D
のようにカーソル右の文字が左スクロールしません
247デフォルトの名無しさん
2017/06/06(火) 23:05:45.52ID:Tfg9c60t scriptに吐かせて何やってるか見てみれば?
248デフォルトの名無しさん
2017/06/06(火) 23:07:42.05ID:Tfg9c60t ちなみにスレチだからこれ以上はどっか行け
249デフォルトの名無しさん
2017/06/07(水) 20:25:58.07ID:izePe9Zb 247
意味不明
248
意味不明
次の方どうぞ〜
意味不明
248
意味不明
次の方どうぞ〜
250デフォルトの名無しさん
2017/06/08(木) 13:15:13.49ID:oPuedIYN 質問いいですか?
251デフォルトの名無しさん
2017/06/08(木) 15:21:18.97ID:NV8Z/enP どうされました?
252デフォルトの名無しさん
2017/07/19(水) 09:29:19.34ID:4WYjcaP8 >>196
アセンブラでアルゴリズム書くノウハウは身に付くよ。
64bitアセンブラでHello Worldしか書けないんじゃ悲し過ぎる。
レジスタ名やニーモニックが違うだけで方言みたいなものだから応用は効く。
CASLは命令数少ないから、擬似命令含めても覚える文法?は一番少ない。
OS作りたいとかなら必須だしね。
そこまで大掛かりじゃなくても、電子工作ではアセンブラで書いた方がマイコン使いこなしてるぜ!って感覚が好き。
(むしろBIOSすらないから、直接VRAM書き込みとかはこっちのが主流)
アセンブラでアルゴリズム書くノウハウは身に付くよ。
64bitアセンブラでHello Worldしか書けないんじゃ悲し過ぎる。
レジスタ名やニーモニックが違うだけで方言みたいなものだから応用は効く。
CASLは命令数少ないから、擬似命令含めても覚える文法?は一番少ない。
OS作りたいとかなら必須だしね。
そこまで大掛かりじゃなくても、電子工作ではアセンブラで書いた方がマイコン使いこなしてるぜ!って感覚が好き。
(むしろBIOSすらないから、直接VRAM書き込みとかはこっちのが主流)
253デフォルトの名無しさん
2017/07/19(水) 11:26:20.41ID:+fK80sDM254デフォルトの名無しさん
2017/07/19(水) 14:03:51.87ID:4WYjcaP8 >>253
VRAMは実際のマイコンでも定義されてない。
CPUは書き込んだ先がただのメモリかVRAMか感知しない。
人間が実装し、CPUが認識するメモリのどこからVRAMとして扱うか決める。
OUTPUTが分かりにくいってのは実際にPICマイコンとかで電子工作してプログラム書き込んだことがないからだと思う。
(むしろOUTマクロで文字列表示出来るだけマシだと思う)
だってPCと違ってマイコンチップにはディスプレイとか無い。
CPUはメモリやポートに値や信号を出す出さない。読む書く、読まない書かない。
それしか外部に出来ない。
何をどう表示するか、どう動くかは実装と取り決め次第。
PCは複雑過ぎる(し、ある程度入出力の手段は決まってる)から、OUTマクロみたいなのをBIOSや各OSのシステムコールが提供してるに過ぎない。
VRAMは実際のマイコンでも定義されてない。
CPUは書き込んだ先がただのメモリかVRAMか感知しない。
人間が実装し、CPUが認識するメモリのどこからVRAMとして扱うか決める。
OUTPUTが分かりにくいってのは実際にPICマイコンとかで電子工作してプログラム書き込んだことがないからだと思う。
(むしろOUTマクロで文字列表示出来るだけマシだと思う)
だってPCと違ってマイコンチップにはディスプレイとか無い。
CPUはメモリやポートに値や信号を出す出さない。読む書く、読まない書かない。
それしか外部に出来ない。
何をどう表示するか、どう動くかは実装と取り決め次第。
PCは複雑過ぎる(し、ある程度入出力の手段は決まってる)から、OUTマクロみたいなのをBIOSや各OSのシステムコールが提供してるに過ぎない。
255デフォルトの名無しさん
2017/07/19(水) 17:23:34.18ID:IRmsE5AJ オナニースレ
256デフォルトの名無しさん
2017/07/22(土) 13:17:30.20ID:aq/FdZCk257デフォルトの名無しさん
2017/07/28(金) 11:04:06.77ID:L3qNkxNi258デフォルトの名無しさん
2017/07/28(金) 12:37:51.02ID:WViVOgsq Cが使えるなら、
普通にPCのx86のコードの中から、
単純なループをアセンブラ化することからはじめれば
普通にPCのx86のコードの中から、
単純なループをアセンブラ化することからはじめれば
259デフォルトの名無しさん
2017/07/28(金) 14:39:46.04ID:JFFpAseU >>257
今、アセンブラやるならx86_64かARM64だな
x86_64ならLinux上でやるとDOSの頃のようなシステムコールを直接アセンブラから呼ぶようなプログラミングができる
C言語のコンパイルでアセンブラ出力をして関数の中身を書き換えてみるとかでもいい
gccなら-Sオプションを付けることでアセンブラ出力ができる
こんな感じでアセンブラ出力して、コンパイルできる
(最適化オプションを指定しないとかなり冗長なコードを出力するので適当に-O1、-O2、-O3などを使った方がいい)
gcc -S -o hogehoge.s hogehoge.c
as -a=hogehoge.lst -o hogehoge.o hogehoge.s
gcc -o hogehoge hogehoge.o
最適化オプションを使う場合
gcc -S -O2 -o hogehoge.s hogehoge.c
as -a=hogehoge.lst -o hogehoge.o hogehoge.s
gcc -o hogehoge hogehoge.o
ARM64ならPINE64買って同じようにLinuxやるか、
AndroidSDK入れてAndroidアプリの作成でJavaからJNIでC/C++を呼び出して
そのC/C++の中でインラインアセンブル組むといい
Linux で64bitアセンブリプログラミング
http://www.mztn.org/lxasm64/amd00.html
Linux で Arm64 アセンブリプログラミング
http://www.mztn.org/dragon/arm6400idx.html
今、アセンブラやるならx86_64かARM64だな
x86_64ならLinux上でやるとDOSの頃のようなシステムコールを直接アセンブラから呼ぶようなプログラミングができる
C言語のコンパイルでアセンブラ出力をして関数の中身を書き換えてみるとかでもいい
gccなら-Sオプションを付けることでアセンブラ出力ができる
こんな感じでアセンブラ出力して、コンパイルできる
(最適化オプションを指定しないとかなり冗長なコードを出力するので適当に-O1、-O2、-O3などを使った方がいい)
gcc -S -o hogehoge.s hogehoge.c
as -a=hogehoge.lst -o hogehoge.o hogehoge.s
gcc -o hogehoge hogehoge.o
最適化オプションを使う場合
gcc -S -O2 -o hogehoge.s hogehoge.c
as -a=hogehoge.lst -o hogehoge.o hogehoge.s
gcc -o hogehoge hogehoge.o
ARM64ならPINE64買って同じようにLinuxやるか、
AndroidSDK入れてAndroidアプリの作成でJavaからJNIでC/C++を呼び出して
そのC/C++の中でインラインアセンブル組むといい
Linux で64bitアセンブリプログラミング
http://www.mztn.org/lxasm64/amd00.html
Linux で Arm64 アセンブリプログラミング
http://www.mztn.org/dragon/arm6400idx.html
260デフォルトの名無しさん
2017/07/28(金) 14:55:01.62ID:JFFpAseU あと、ARM64のアセンブラを遅くてもいいからx86_64のUbuntuでやりたい場合
QEMUをインストールし、ARM64のクロスコンパイラを入れることで
ARM64のクロス開発とエミュレーション環境が構築できる
sudo apt-get install qemu
sudo apt-get install g++-aarch64-linux-gnu
sudo ln -s /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 /lib
sudo ln -s /usr/aarch64-linux-gnu/lib /lib/aarch64-linux-gnu
これでARM64のプログラムをx86_64のプログラムと同じように実行できるようになる
(あくまでエミュレーションなので動作は遅い)
コンパイル方法は
aarch64-linux-gnu-gcc -o hogehoge hogehoge.c
アセンブラ出力してコンパイルするなら
aarch64-linux-gnu-gcc -S -o hogehoge.s hogehoge.c
aarch64-linux-gnu-as -a=hogehoge.lst -o hogehoge.o hogehoge.s
aarch64-linux-gnu-gcc -o hogehoge hogehoge.o
実行はx86_64のプログラムと同じように実行できる
./hogehoge
明示的にQEMUを呼び出して実行時のCPUを指定して実行したりできる
qemu-aarch64 -cpu cortex-a57 hogehoge
指定できるCPUの種類を調べるには
qemu-aarch64 -cpu help
どのARM64のバイナリかどうかを調べるには
file hogehoge
で確認できる
QEMUをインストールし、ARM64のクロスコンパイラを入れることで
ARM64のクロス開発とエミュレーション環境が構築できる
sudo apt-get install qemu
sudo apt-get install g++-aarch64-linux-gnu
sudo ln -s /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 /lib
sudo ln -s /usr/aarch64-linux-gnu/lib /lib/aarch64-linux-gnu
これでARM64のプログラムをx86_64のプログラムと同じように実行できるようになる
(あくまでエミュレーションなので動作は遅い)
コンパイル方法は
aarch64-linux-gnu-gcc -o hogehoge hogehoge.c
アセンブラ出力してコンパイルするなら
aarch64-linux-gnu-gcc -S -o hogehoge.s hogehoge.c
aarch64-linux-gnu-as -a=hogehoge.lst -o hogehoge.o hogehoge.s
aarch64-linux-gnu-gcc -o hogehoge hogehoge.o
実行はx86_64のプログラムと同じように実行できる
./hogehoge
明示的にQEMUを呼び出して実行時のCPUを指定して実行したりできる
qemu-aarch64 -cpu cortex-a57 hogehoge
指定できるCPUの種類を調べるには
qemu-aarch64 -cpu help
どのARM64のバイナリかどうかを調べるには
file hogehoge
で確認できる
261デフォルトの名無しさん
2017/07/28(金) 15:05:26.32ID:JFFpAseU Windowsの仮想マシンを使ってUbuntuを入れるのはこんな感じ
Windows 10 でVMware Workstation Player With Ubuntu
http://www.aise.ics.saitama-u.ac.jp/~gotoh/VMWorkstationPlayerIntoWindows10.html
Windows 10 でVMware Workstation Player With Ubuntu
http://www.aise.ics.saitama-u.ac.jp/~gotoh/VMWorkstationPlayerIntoWindows10.html
262デフォルトの名無しさん
2017/07/28(金) 16:13:44.13ID:WViVOgsq 普通にVisualStudioでやれば
263デフォルトの名無しさん
2017/07/28(金) 16:17:43.90ID:WViVOgsq システムコールの勉強なんて今時いらんでしょ
VisualStudioなら既にインストールされてそうだし、
アセンブラソースをプロジェクトに加えるなので楽
VisualStudioなら既にインストールされてそうだし、
アセンブラソースをプロジェクトに加えるなので楽
264デフォルトの名無しさん
2017/07/28(金) 18:28:29.67ID:2hIYBPjn >>257
上のx86_64アセンブラ勧めてるのは慣れてる人だから、自分が慣れて来たら参考にしても良いけど、ネットでもHello worldで終わってるコードばっかりとだけ言っておこう。
そう言う意味じゃ、自分でx86_64アセンブラの命令一覧を参考にコード書くためにも、CASLでアセンブラに慣れてみた方がいい。
PC向けはシステムコールじゃないと文字も出力出来ないので、VRAM直接弄りたいならGBやGBAなどのゲーム機や組み込み、電子工作のアセンブラコードのが面白い。
上のx86_64アセンブラ勧めてるのは慣れてる人だから、自分が慣れて来たら参考にしても良いけど、ネットでもHello worldで終わってるコードばっかりとだけ言っておこう。
そう言う意味じゃ、自分でx86_64アセンブラの命令一覧を参考にコード書くためにも、CASLでアセンブラに慣れてみた方がいい。
PC向けはシステムコールじゃないと文字も出力出来ないので、VRAM直接弄りたいならGBやGBAなどのゲーム機や組み込み、電子工作のアセンブラコードのが面白い。
265デフォルトの名無しさん
2017/07/28(金) 19:47:53.52ID:JFFpAseU CASLじゃ、全然参考にならない
実際に使われてるものを使って勉強した方が良い
本屋でx86またはx86_64関係のアセンブラの本をいろいろ物色してみるのがいいかもね
ARMやARM64関連のアセンブラの本はあまり出てないからね
実際に使われてるものを使って勉強した方が良い
本屋でx86またはx86_64関係のアセンブラの本をいろいろ物色してみるのがいいかもね
ARMやARM64関連のアセンブラの本はあまり出てないからね
266デフォルトの名無しさん
2017/07/28(金) 20:03:16.15ID:SfCHZxYK >>265
64ビットOSでx86アセンブラの16ビットコード動かないじゃん?
仮想PCにFreeDOSでも入れればいいんだろうけど。
それにシステムコールの使い方ばっかで、意外とソートとかそう言うコード無いんよね。
だから最初はCASL勧めてる。
その後はx86なりx86_64なりARMなりお好きにどうぞ。
64ビットOSでx86アセンブラの16ビットコード動かないじゃん?
仮想PCにFreeDOSでも入れればいいんだろうけど。
それにシステムコールの使い方ばっかで、意外とソートとかそう言うコード無いんよね。
だから最初はCASL勧めてる。
その後はx86なりx86_64なりARMなりお好きにどうぞ。
267デフォルトの名無しさん
2017/07/28(金) 20:12:28.96ID:WViVOgsq x86が目的ならはじめからx86でいいよ
わざわざ回り道しなくても
わざわざ回り道しなくても
268デフォルトの名無しさん
2017/07/28(金) 20:15:58.51ID:WViVOgsq ARMが目的ならARMで
MIPSが目的ならMIPSで
PICが目的ならPICで
RXが目的ならRXで
命令自体はMIPSが良いとは思うけど
わざわざ回り道するほどではない
MIPSが目的ならMIPSで
PICが目的ならPICで
RXが目的ならRXで
命令自体はMIPSが良いとは思うけど
わざわざ回り道するほどではない
269デフォルトの名無しさん
2017/07/28(金) 20:58:17.26ID:SfCHZxYK 下記URL参照だが、この意見に賛同。
x86は入門向けとは言い難い。
そもそもWinだと結局WinAPIより下の階層触れないからCで書くのとほとんど変わらない。
どうしてもx86_64ならLinuxがまだマシ。
オススメはGBAのARM32ビットCPUのアセンブラ。
ハードの仕様固定だから、直でVRAM弄れて楽しい。
PCはBIOSやOSが有るから、この辺楽しめない。
CASL IIはプログラマ視点で低水準な世界の雰囲気を味わう分には手軽な言語ではないかと思う。
本来は実機と本物のアセンブラを使うべきなんだろうけど、ちょっとしたボードであっても実際に動かすには色々な手順*4が必要で
面倒だし*5、普及しているアーキテクチャが入門向けとも限らない*6。低水準の世界にどっぷり浸かる必要があるならそういった現実ならではの汚い部分に向き合わなくてはならないけど、
そうでないならCASL IIの箱庭ぐらいが丁度良いのではないだろうか?
もっとも極めても直接的に役に立つことはない言語だという点は留意しておくべきだけど。
http://d.hatena.ne.jp/eel3/touch/20120109/1326110720
x86は入門向けとは言い難い。
そもそもWinだと結局WinAPIより下の階層触れないからCで書くのとほとんど変わらない。
どうしてもx86_64ならLinuxがまだマシ。
オススメはGBAのARM32ビットCPUのアセンブラ。
ハードの仕様固定だから、直でVRAM弄れて楽しい。
PCはBIOSやOSが有るから、この辺楽しめない。
CASL IIはプログラマ視点で低水準な世界の雰囲気を味わう分には手軽な言語ではないかと思う。
本来は実機と本物のアセンブラを使うべきなんだろうけど、ちょっとしたボードであっても実際に動かすには色々な手順*4が必要で
面倒だし*5、普及しているアーキテクチャが入門向けとも限らない*6。低水準の世界にどっぷり浸かる必要があるならそういった現実ならではの汚い部分に向き合わなくてはならないけど、
そうでないならCASL IIの箱庭ぐらいが丁度良いのではないだろうか?
もっとも極めても直接的に役に立つことはない言語だという点は留意しておくべきだけど。
http://d.hatena.ne.jp/eel3/touch/20120109/1326110720
270デフォルトの名無しさん
2017/07/28(金) 21:15:04.59ID:JFFpAseU アセンブラの勉強のためならマイコンとかゲーム機とかでしなくても
JavaならビットマップにBufferedImage使えば
BufferedImageクラスに画面の内容をgetRGBというint型の配列として読み込むメソッドがあるので
これで読み取った内容をjniでC言語に渡して、
C言語からアセンブラに渡すか、インラインアセンブラでこの画像の処理をする部分を書いて
Javaに返してBufferedImageの画面の内容を書き換えれば(int型の配列を書き戻すのはsetRGB)
AndroidだとbitmapクラスにgetPixelsとsetPixelsがあって同様のことができる
(AndroidだとARMがメインになる)
これでVRAMをいじるのと同じことができる
javaとC言語ができるならJavaからCを呼び出すjniだって出来るんだろうし
アセンブラだからといって低レベルの部分にどっぷり浸かる必要はない
低レベルの部分にどっぷり浸かりたいならマイコンやればいいだけ
工業高校や専門学校ではそういう授業には8bitのPICやAVRなどのマイコンを使ってる
32bitマイコンだとアセンブラというよりもC言語がメインになるな
JavaならビットマップにBufferedImage使えば
BufferedImageクラスに画面の内容をgetRGBというint型の配列として読み込むメソッドがあるので
これで読み取った内容をjniでC言語に渡して、
C言語からアセンブラに渡すか、インラインアセンブラでこの画像の処理をする部分を書いて
Javaに返してBufferedImageの画面の内容を書き換えれば(int型の配列を書き戻すのはsetRGB)
AndroidだとbitmapクラスにgetPixelsとsetPixelsがあって同様のことができる
(AndroidだとARMがメインになる)
これでVRAMをいじるのと同じことができる
javaとC言語ができるならJavaからCを呼び出すjniだって出来るんだろうし
アセンブラだからといって低レベルの部分にどっぷり浸かる必要はない
低レベルの部分にどっぷり浸かりたいならマイコンやればいいだけ
工業高校や専門学校ではそういう授業には8bitのPICやAVRなどのマイコンを使ってる
32bitマイコンだとアセンブラというよりもC言語がメインになるな
271デフォルトの名無しさん
2017/07/28(金) 21:19:45.51ID:SfCHZxYK もうそれ、アセンブラそのものの否定に片足突っ込んでるよね?
ぶっちゃけ高級言語からアセンブラ呼ぶ意義はSIMD命令使う以外は無いと思う。
アセンブラ好きの行き着く先はマイコンよ。
ぶっちゃけ高級言語からアセンブラ呼ぶ意義はSIMD命令使う以外は無いと思う。
アセンブラ好きの行き着く先はマイコンよ。
272デフォルトの名無しさん
2017/07/28(金) 21:32:28.65ID:JFFpAseU マイコンでもC言語をメインに使うのは同じ
Cでは書けないもしくは遅くなる部分でアセンブラを使うだけ
Cでは書けないもしくは遅くなる部分でアセンブラを使うだけ
273デフォルトの名無しさん
2017/07/28(金) 21:46:50.84ID:d5LZ2kks■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「日本はパンダがいなくなる状況に直面するだろう」 中国メディア、専門家の見方伝える [♪♪♪★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★11 [樽悶★]
- 止まらぬ「日本売り」 高市財政への懸念で進む金利上昇と円安 ★2 [蚤の市★]
- 【無言】中国怒らせた高市首相→1週間だんまり、国民に実害も説明なし 中国問題を避けてスルー… ★5 [BFU★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★12 [樽悶★]
- 外国人の犯罪率は日本人の1.72倍 警察庁が短期滞在者除いた数字を参院内閣委で答弁★2 [七波羅探題★]
- 【高市悲報】大暴落 [115996789]
- 【速報】東京から人が消える [329329848]
- 🏡
- 銀行立てこもり犯「そこの男、この女とセックスしろ。マスコミはそれを生中継しろ」
- 【悲報】国会議員の給料アップ法改正、自民と維新で喧嘩し始めるWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
- 友達がお前らの事をさ…
