前スレ
http://pc11.2ch.net/test/read.cgi/tech/1187079488/
アセンブラ 13
■ このスレッドは過去ログ倉庫に格納されています
2011/08/28(日) 15:24:40.59
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:d5LZ2kks274デフォルトの名無しさん
2017/07/28(金) 21:52:56.42ID:d5LZ2kks >>271
いろんなアセンブラ好きがいる
SIMDや特殊命令でパフォーマンスを追求する人
アセンブラでのOSやシステム設計をする人
オールアセンブラでマイコンのプログラムを書く人
ハッキングに使う人
コンパクトなコードを極める人
アセンブラを作る人
命令セットを作る人
マイコンを作る人
いろんなアセンブラ好きがいる
SIMDや特殊命令でパフォーマンスを追求する人
アセンブラでのOSやシステム設計をする人
オールアセンブラでマイコンのプログラムを書く人
ハッキングに使う人
コンパクトなコードを極める人
アセンブラを作る人
命令セットを作る人
マイコンを作る人
275デフォルトの名無しさん
2017/07/28(金) 22:11:12.31ID:qPbT9hdu >>203
これ自演じゃなければ凄いよあなた
これ自演じゃなければ凄いよあなた
276デフォルトの名無しさん
2017/07/28(金) 22:12:41.88ID:d5LZ2kks 普通の人ならVisualStudioでx86を動かすのが環境的には一番楽
プロジェクトを作成して、
メニューから [プロジェクト] ===> [ビルドのカスタマイズ] ===> masm をチェックして[OK]
あとは、*.cpp と *.asm のファイルを作ってコードを書けばビルド、実行、デバッグが可能
以下が64bitコードの例
---- cpp ----
#include <iostream>
extern "C" int func(int a, int b);
int main(){
std::cout << func(2,3) << "\n";
return 0;
}
---- asm ----
.code
func proc
mov eax, ecx
add eax, edx
ret
func endp
end
----
プロジェクトを作成して、
メニューから [プロジェクト] ===> [ビルドのカスタマイズ] ===> masm をチェックして[OK]
あとは、*.cpp と *.asm のファイルを作ってコードを書けばビルド、実行、デバッグが可能
以下が64bitコードの例
---- cpp ----
#include <iostream>
extern "C" int func(int a, int b);
int main(){
std::cout << func(2,3) << "\n";
return 0;
}
---- asm ----
.code
func proc
mov eax, ecx
add eax, edx
ret
func endp
end
----
277デフォルトの名無しさん
2017/07/28(金) 22:31:53.29ID:d5LZ2kks 画像データ、音声データ、その他データの準備や結果の保存はC/C++でやって、
アセンブラは、実際の処理部分だけでいい。
AVX, AVX2, FMA3もVisualStudio2017なら対応してるし、
AVX512も次のアップデートで使えるようになる
PC上のコードの高速化が目的であればこの方法
そうじゃなくて、アセンブラで上から下まですべて記述してみたい
というのであれば、小型のマイコンで
たとえば、以下があればLEDを点灯させて遊ぶことが出来る
開発ツールは無料
http://akizukidenshi.com/catalog/g/gI-11886/
http://akizukidenshi.com/catalog/g/gM-03608/
http://akizukidenshi.com/catalog/g/gP-09257/
http://akizukidenshi.com/catalog/g/gC-05159/
http://akizukidenshi.com/catalog/g/gP-00288/
http://akizukidenshi.com/catalog/g/gI-02082/
http://akizukidenshi.com/catalog/g/gR-16102/
アセンブラは、実際の処理部分だけでいい。
AVX, AVX2, FMA3もVisualStudio2017なら対応してるし、
AVX512も次のアップデートで使えるようになる
PC上のコードの高速化が目的であればこの方法
そうじゃなくて、アセンブラで上から下まですべて記述してみたい
というのであれば、小型のマイコンで
たとえば、以下があればLEDを点灯させて遊ぶことが出来る
開発ツールは無料
http://akizukidenshi.com/catalog/g/gI-11886/
http://akizukidenshi.com/catalog/g/gM-03608/
http://akizukidenshi.com/catalog/g/gP-09257/
http://akizukidenshi.com/catalog/g/gC-05159/
http://akizukidenshi.com/catalog/g/gP-00288/
http://akizukidenshi.com/catalog/g/gI-02082/
http://akizukidenshi.com/catalog/g/gR-16102/
278デフォルトの名無しさん
2017/07/28(金) 22:52:22.19ID:MUY2be1G >>275
普通に、printf("%s", "%d\202\252\223\374\227\315\202\263\202\352\202\334\202\265\202\275\12\0");
を実行すればいいだけだろ?
普通に、printf("%s", "%d\202\252\223\374\227\315\202\263\202\352\202\334\202\265\202\275\12\0");
を実行すればいいだけだろ?
279デフォルトの名無しさん
2017/07/29(土) 07:25:47.22ID:XkzNePZu >>273
JavaとCができると書かれててグラフィックの話が出ててきてたからね
Javaならグラフィックスを扱うのも楽だから。
JavaのJNIはJavaからC/C++を呼び出せて
その呼び出されたC/C++のプログラムからJavaの関数を呼び出せたりする
だからJavaのAPIをC/C++から叩ける
そのC/C++の中でインラインアセンブラを使ったり、そのC/C++の関数をアセンブラから叩けばいいからね
C#ができる人ならC++でDLL作成してC#から呼び出せば同じことだけど
JavaとCができると書かれててグラフィックの話が出ててきてたからね
Javaならグラフィックスを扱うのも楽だから。
JavaのJNIはJavaからC/C++を呼び出せて
その呼び出されたC/C++のプログラムからJavaの関数を呼び出せたりする
だからJavaのAPIをC/C++から叩ける
そのC/C++の中でインラインアセンブラを使ったり、そのC/C++の関数をアセンブラから叩けばいいからね
C#ができる人ならC++でDLL作成してC#から呼び出せば同じことだけど
280デフォルトの名無しさん
2017/07/29(土) 07:34:28.42ID:N+YJafLA >>279
Cでグラフィックを扱ったことがない感じ?
Cでグラフィックを扱ったことがない感じ?
281デフォルトの名無しさん
2017/07/29(土) 07:35:16.18ID:N+YJafLA 相変わらずJavaを経由する意味がわからない
282デフォルトの名無しさん
2017/07/29(土) 07:39:18.59ID:N+YJafLA グラフィックをやりたいのかどうかすら不明なのに
回答が先走りすぎ
回答が先走りすぎ
283デフォルトの名無しさん
2017/07/29(土) 07:40:53.88ID:MyKDeSRq >>279
楽とかじゃなくて、直接弄れるのが大事なんだが。。。
楽とかじゃなくて、直接弄れるのが大事なんだが。。。
284デフォルトの名無しさん
2017/07/29(土) 07:55:24.81ID:N+YJafLA 質問者が直接弄りたいのか不明
グラフィックを扱いたいのかも不明
グラフィックを扱いたいのかも不明
285デフォルトの名無しさん
2017/07/29(土) 07:58:35.02ID:N+YJafLA 直接弄りたいって>>264が言ってるだけ
286デフォルトの名無しさん
2017/08/04(金) 03:45:56.37ID:kIgI5e6Z さらっとここまで読んでみた
勉強が動機ならCASLが一番いいのでは?
勉強が動機ならCASLが一番いいのでは?
287デフォルトの名無しさん
2017/08/04(金) 03:46:13.76ID:kIgI5e6Z あげとくかな
288デフォルトの名無しさん
2017/08/05(土) 20:59:41.90ID:7J5Re5fS 汗ばむブラ
289デフォルトの名無しさん
2017/08/05(土) 21:02:08.67ID:AGcDSNVp はい
290デフォルトの名無しさん
2017/08/08(火) 21:58:01.16ID:okYWuzKv291デフォルトの名無しさん
2017/08/09(水) 01:07:10.44ID:BwLXh8cR292デフォルトの名無しさん
2017/08/09(水) 09:13:43.34ID:Qcpwsibl 基本はIA32だよな
293デフォルトの名無しさん
2017/08/16(水) 13:44:14.31ID:1QMAod07 AndroidやiPhoneであれだけ64bitのARMが普及してるのに
64bitのARMの命令セットの解説書がほとんどないのがね
今からやるなら64bitのARMもオススメ
CPUの入門書であるComputer Organization and Design(日本語では「コンピュータの構成と設計」という題名)
は今までMIPSだけだったが洋書ではMIPS版の他に64bitのARM版も出てる
https://www.amazon.co.jp/dp/0128017333
64bitのARMの命令セットの解説書がほとんどないのがね
今からやるなら64bitのARMもオススメ
CPUの入門書であるComputer Organization and Design(日本語では「コンピュータの構成と設計」という題名)
は今までMIPSだけだったが洋書ではMIPS版の他に64bitのARM版も出てる
https://www.amazon.co.jp/dp/0128017333
294デフォルトの名無しさん
2017/08/16(水) 13:46:01.32ID:1QMAod07 64bitのARMで日本語の資料としてはこのサイトが一番わかりやすい
プログラムの実例があまりないけど
Linux で Arm64 アセンブリプログラミング
http://www.mztn.org/dragon/arm6400idx.html
プログラムの実例があまりないけど
Linux で Arm64 アセンブリプログラミング
http://www.mztn.org/dragon/arm6400idx.html
295デフォルトの名無しさん
2017/08/16(水) 13:50:52.61ID:1QMAod07 Computer Organization and DesignはあくまでCPUの基本を勉強するための本なので
別に買う必要はないよ
ただ、こういう有名な本でも64bitのARMが実例として採用されてるということ
別に買う必要はないよ
ただ、こういう有名な本でも64bitのARMが実例として採用されてるということ
296デフォルトの名無しさん
2017/08/16(水) 23:47:54.90ID:NUab+Q0J >>290
演算結果を直接床に置けないのがめんどい
演算結果を直接床に置けないのがめんどい
297デフォルトの名無しさん
2017/08/17(木) 21:42:18.46ID:bJbJryeq なんでも床におくから部屋が汚くなる
298デフォルトの名無しさん
2017/08/18(金) 00:52:05.51ID:stC/R/7K299デフォルトの名無しさん
2017/08/26(土) 06:08:03.44ID:GN0ypiky300デフォルトの名無しさん
2017/08/26(土) 10:08:01.01ID:ljYsXPF5 スクラッチみたいにGUIの部品並べたら
アセンブリが出来上がるソフトはないの?
アセンブリが出来上がるソフトはないの?
301デフォルトの名無しさん
2017/08/26(土) 10:10:30.47ID:3MgN9vVX302デフォルトの名無しさん
2017/08/27(日) 06:35:53.72ID:e4TdDFEN アセンブリが出来上がるっていうか実行ファイルだろう
303デフォルトの名無しさん
2017/08/27(日) 08:53:51.24ID:LSSLdcGe >>300
機械語に一対一対応のGUI部品作れば良いだけだけど、結局並べるのにハードの知識が要求されるっていう。。。
アセンブラを文字で入力するかマウスで入力するかの違いしかねえ。
入力の速さ考えたら文字のが早いっていうね。
機械語に一対一対応のGUI部品作れば良いだけだけど、結局並べるのにハードの知識が要求されるっていう。。。
アセンブラを文字で入力するかマウスで入力するかの違いしかねえ。
入力の速さ考えたら文字のが早いっていうね。
304デフォルトの名無しさん
2017/08/27(日) 10:07:19.52ID:ZaV3m3/p ループとか分岐が視覚的にわかると便利
305デフォルトの名無しさん
2017/08/27(日) 10:11:28.92ID:LSSLdcGe どっちもただのジャンプ命令だから、GUI部品にした所で分かりやすくなるとは思えないが。。。
ジャンプ先のラベルを分岐かループかで色分けすれば?
ジャンプ先のラベルを分岐かループかで色分けすれば?
306デフォルトの名無しさん
2017/08/27(日) 12:08:19.63ID:e4TdDFEN GUI部品がアセンブラの命令だけだと意味ないんじゃね
307デフォルトの名無しさん
2017/08/27(日) 13:04:01.25ID:LSSLdcGe その通りだが、機械語と一対一じゃなくなった時点でアセンブラではなくただの高級言語。
308デフォルトの名無しさん
2017/08/27(日) 13:14:42.34ID:KKCBM/yI アセンブラマクロというものがなかったか?
それと、歴史的に機械語→アセンブラ→構造化→高級言語って進んてるんだから
構造化してないようなものは高級言語には入らないだろ
低級とか高級とかはどれだけハードウェアに近いかとか人間に近いかとかだが、
それでもアセンブラマクロがあるからって高級言語にはならんと思うよ
それと、歴史的に機械語→アセンブラ→構造化→高級言語って進んてるんだから
構造化してないようなものは高級言語には入らないだろ
低級とか高級とかはどれだけハードウェアに近いかとか人間に近いかとかだが、
それでもアセンブラマクロがあるからって高級言語にはならんと思うよ
309デフォルトの名無しさん
2017/08/27(日) 13:36:32.53ID:LSSLdcGe そりゃそうだ。
命令とマクロは違うし。
それでもマクロ使えるのは高級アセンブラとか言われてたな。
命令とマクロは違うし。
それでもマクロ使えるのは高級アセンブラとか言われてたな。
310デフォルトの名無しさん
2017/08/27(日) 13:42:52.40ID:KKCBM/yI それは「高級言語のアセンブラ」ではないんだが、
わかってるか?
わかってるか?
311デフォルトの名無しさん
2017/08/27(日) 13:56:13.37ID:LSSLdcGe 両方の意味で使われてた気がするがなぁ。
マクロが豊富で高級言語っぽく使えるって触れ込み。
高機能アセンブラとも、高級言語風アセンブラともとれる。
マクロ使うかどうかはその人次第だろうが。
マクロが豊富で高級言語っぽく使えるって触れ込み。
高機能アセンブラとも、高級言語風アセンブラともとれる。
マクロ使うかどうかはその人次第だろうが。
312デフォルトの名無しさん
2017/08/27(日) 13:59:32.69ID:KKCBM/yI マクロや擬似命令がついてるからって、高級言語にはならない
いったいそのトンチンカンな知識はどこで習ったんだ?
いったいそのトンチンカンな知識はどこで習ったんだ?
313デフォルトの名無しさん
2017/08/27(日) 14:15:34.89ID:LSSLdcGe 誰が高級言語になると書いたよ。
高級言語「風」だ。
それにアセンブラメーカーの宣伝文句をそのまま書いただけだ。
(リーフアセンブラだったっけ?大分昔買ったやつ)
機械語を吐くって意味じゃアセンブラも高級言語も同じ。
むしろアセンブラのが機械語と一対一だから単純。
ループや分岐みたいなよく使う機械語パターンを文法によって吐くのが高級言語ってだけ。
高級言語「風」だ。
それにアセンブラメーカーの宣伝文句をそのまま書いただけだ。
(リーフアセンブラだったっけ?大分昔買ったやつ)
機械語を吐くって意味じゃアセンブラも高級言語も同じ。
むしろアセンブラのが機械語と一対一だから単純。
ループや分岐みたいなよく使う機械語パターンを文法によって吐くのが高級言語ってだけ。
314デフォルトの名無しさん
2017/08/27(日) 14:23:55.78ID:KKCBM/yI >その通りだが、機械語と一対一じゃなくなった時点でアセンブラではなくただの高級言語。
>機械語と一対一じゃなくなった時点でアセンブラではなくただの高級言語。
>高級言語。
>機械語と一対一じゃなくなった時点でアセンブラではなくただの高級言語。
>高級言語。
315デフォルトの名無しさん
2017/08/27(日) 15:48:55.40ID:gTD+3SIf >>304
そこでフローチャートですよ
そこでフローチャートですよ
316デフォルトの名無しさん
2017/08/27(日) 15:50:51.76ID:3R3KU0xo 構造化を高級言語の条件にしちゃったら BASIC が可哀想だよ。
ラベルを明示的に書かずに分岐やループを書ければいいのなら OPTASM でやったよ。ずいぶん昔だけど。
ラベルを明示的に書かずに分岐やループを書ければいいのなら OPTASM でやったよ。ずいぶん昔だけど。
317デフォルトの名無しさん
2017/08/27(日) 17:13:47.31ID:KKCBM/yI ID代えてもバカさを隠せないなんて、
おれ、こんななの初めて見た
構造化を知らないからこそ、BASICがどうたらって話が出てくるんだろうな
そんなに知ったかぶりたいのか?
おれ、こんななの初めて見た
構造化を知らないからこそ、BASICがどうたらって話が出てくるんだろうな
そんなに知ったかぶりたいのか?
318デフォルトの名無しさん
2017/08/27(日) 17:55:08.59ID:3R3KU0xo 何を言いたいのか知らないが、人違いだよ。
319デフォルトの名無しさん
2017/08/27(日) 18:28:57.82ID:LIgBPoun いいえ人妻です
320デフォルトの名無しさん
2017/08/27(日) 19:24:13.16ID:e4TdDFEN いいえケフィアです
■ このスレッドは過去ログ倉庫に格納されています
