初心者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
749デフォルトの名無しさん
2020/07/02(木) 22:24:08.15ID:L2HGsVdw 思いつかないってことは、本当にやりたいと思ってないってことだろうな。
たとえば部屋で飼ってる猫の様子を出先から監視したいと思ったらArduinoとカメラユニットを組み合わせて
スマホから見られる制御ソフトを作るだろう。
たとえば部屋で飼ってる猫の様子を出先から監視したいと思ったらArduinoとカメラユニットを組み合わせて
スマホから見られる制御ソフトを作るだろう。
>>749
それはアセンブラだからこそできる、という題材ですか?
それはアセンブラだからこそできる、という題材ですか?
751デフォルトの名無しさん
2020/07/02(木) 23:32:35.76ID:1S4E8SKc スタートアップコードの記述
OS作成
くらいじゃね?
OS作成
くらいじゃね?
752デフォルトの名無しさん
2020/07/02(木) 23:34:12.29ID:1S4E8SKc パフォーマンス系なら
DSP制御とか
リアルタイム系の重い処理とか
DSP制御とか
リアルタイム系の重い処理とか
753デフォルトの名無しさん
2020/07/02(木) 23:36:24.16ID:1S4E8SKc >>749
アセンブラが適さない典型
アセンブラが適さない典型
754デフォルトの名無しさん
2020/07/02(木) 23:38:56.48ID:dBIHsFi5 ペリフェラルAとペリフェラルBを同期させて動かしたいなんて場合はアセンブラの使用を検討する
755デフォルトの名無しさん
2020/07/02(木) 23:40:30.23ID:1S4E8SKc えらい抽象的だな
タイミングにシビアなのはコンパイラに依存しないようにアセンブラで書くってのはある
もちろんシビアな部分だけ
タイミングにシビアなのはコンパイラに依存しないようにアセンブラで書くってのはある
もちろんシビアな部分だけ
756デフォルトの名無しさん
2020/07/02(木) 23:42:01.52ID:1S4E8SKc >>747
これも抽象的で何の実装だかさっぱりわからん
これも抽象的で何の実装だかさっぱりわからん
757デフォルトの名無しさん
2020/07/03(金) 04:39:01.80ID:/VSGTLiK >>748
やっぱり、SIMD命令とか組み込みだとDSP命令を使いたい時とかじゃないの?
やっぱり、SIMD命令とか組み込みだとDSP命令を使いたい時とかじゃないの?
758デフォルトの名無しさん
2020/07/03(金) 07:56:44.00ID:jbweNl0h 最近ではSIMDやDSP命令はCの文法で記述出来るのが普通
もちろんガチガチのチューニングはアセンブラが一番だから
結局チューニングという範疇
もちろんガチガチのチューニングはアセンブラが一番だから
結局チューニングという範疇
759デフォルトの名無しさん
2020/07/03(金) 17:33:03.39ID:Rc6pK0Eu >>750
俺は「アセンブラだからこそ」という制限など付けていない。そういう制限はあんたが勝手に付けたものだ。
作りたいものを作る。それが趣味だ。
違うと思うなら自分で考えてアセンブラだからこそというものを作ればいい。
俺は「アセンブラだからこそ」という制限など付けていない。そういう制限はあんたが勝手に付けたものだ。
作りたいものを作る。それが趣味だ。
違うと思うなら自分で考えてアセンブラだからこそというものを作ればいい。
760デフォルトの名無しさん
2020/07/03(金) 17:34:28.08ID:Rc6pK0Eu761デフォルトの名無しさん
2020/07/03(金) 18:57:27.44ID:C0RVqI6W 趣味ならアセンブラを使う理由なんて何でも良い
でもどうせならアセンブラを使うことでメリットが何かしら得られる方が良い
そのメリットは大きい方が良い
と思うのは普通かと
でもどうせならアセンブラを使うことでメリットが何かしら得られる方が良い
そのメリットは大きい方が良い
と思うのは普通かと
762デフォルトの名無しさん
2020/07/03(金) 19:34:45.09ID:Rc6pK0Eu >>761
趣味は一般的なメリットなんか考えてたらできない。
鉄ヲタなんか、自分で電車運転したいためだけにパソコンのシミュレータを自作してる。
それも20年もかけて作って値段は0。タダで配ってる。金銭的なメリットはゼロだ。
窓から見える信号機や駅のデータも手間暇かけて現地に行ってパソコンのデータに変換してる。
運転席の計器類やすれ違う電車のモデルやデザイン、色まで正確に再現してる。
とてもこれだけの手間に見合うメリットがあるとは思えない。
でもこれだけの無駄をしてもやりたいのが趣味なんだよ。
鉄ヲタがアセンブラを使うとしたら、電車が動くスピードが少し遅く感じるから本物と同じくらい反応を早くしたいと
思ったらすぐ使うだろう。とにかくやりたいからやる。それ以外のことは考えないのが趣味だよ。
趣味は一般的なメリットなんか考えてたらできない。
鉄ヲタなんか、自分で電車運転したいためだけにパソコンのシミュレータを自作してる。
それも20年もかけて作って値段は0。タダで配ってる。金銭的なメリットはゼロだ。
窓から見える信号機や駅のデータも手間暇かけて現地に行ってパソコンのデータに変換してる。
運転席の計器類やすれ違う電車のモデルやデザイン、色まで正確に再現してる。
とてもこれだけの手間に見合うメリットがあるとは思えない。
でもこれだけの無駄をしてもやりたいのが趣味なんだよ。
鉄ヲタがアセンブラを使うとしたら、電車が動くスピードが少し遅く感じるから本物と同じくらい反応を早くしたいと
思ったらすぐ使うだろう。とにかくやりたいからやる。それ以外のことは考えないのが趣味だよ。
763デフォルトの名無しさん
2020/07/03(金) 19:49:18.27ID:v8523RMt 鉄オタきも
って言ってほしい感じ?
って言ってほしい感じ?
764デフォルトの名無しさん
2020/07/03(金) 19:52:48.87ID:v8523RMt 再現性がメリット
ならそれでいいじゃん
アセンブラを使うことで
高速化とか
リソースの節約とか
それもメリット
高速化もせず
リソースも変わらず
質が落ちる
だと何のためのアセンブラ?
ならそれでいいじゃん
アセンブラを使うことで
高速化とか
リソースの節約とか
それもメリット
高速化もせず
リソースも変わらず
質が落ちる
だと何のためのアセンブラ?
765デフォルトの名無しさん
2020/07/03(金) 21:30:22.45ID:Rc6pK0Eu >>763
BSDヲタきもって言ってやろうか?
BSDヲタきもって言ってやろうか?
766デフォルトの名無しさん
2020/07/04(土) 00:06:32.98ID:KYM6hePT http://www.littlebsd.com/
https://twitter.com/little_bsd
https://twitter.com/5chan_nel (5ch newer account)
https://twitter.com/little_bsd
https://twitter.com/5chan_nel (5ch newer account)
767デフォルトの名無しさん
2020/07/15(水) 00:32:33.69ID:0MCF5KaT amd64+Linuxでアセンブラを始めたのですが、スタックの状態を勘違いしてのバグや
システムコール時のレジスタの退避し忘れのバグ等に悩まされてます
スタックの利用状況を分かりやすく表示してくれたり、レジスタの状態をチェックしてくれたり
するような、統合開発環境みたいなのはありませんでしょうか
システムコール時のレジスタの退避し忘れのバグ等に悩まされてます
スタックの利用状況を分かりやすく表示してくれたり、レジスタの状態をチェックしてくれたり
するような、統合開発環境みたいなのはありませんでしょうか
768デフォルトの名無しさん
2020/07/15(水) 11:52:01.41ID:Fiuz3Frw 楽したければC使え
769デフォルトの名無しさん
2020/07/15(水) 12:20:50.44ID:cL9c5hZ8 慣れたら悩まなくなる
770デフォルトの名無しさん
2020/07/15(水) 14:03:15.88ID:p6AIoBG7 アセンブラだと自己書き換えコードが出来るぞ
それによる考えられるメリットは様々あり、ここでは書きにくいこともあるw
あと、正確なことは分からんが、OS開発ではアセンブラがしばしば使われていて、特にブートローダーの開発で使われていると聞いたことがあるな
他にはマイコンだとアセンブラの方が開発しやすいこともあったりするのか?知らんけど
俺は、スレッドセーフなプログラミングにはアセンブラの知識が不可欠だと思っているが、これは他者の意見も聞きたいところだな
他にもアセンブラでしか出来ないことはあるのにアセンブラは趣味の為ときたもんだ(怒)
まずコンパイラは確実
エミュレータなんかもそうじゃないのか?知らんけど
それによる考えられるメリットは様々あり、ここでは書きにくいこともあるw
あと、正確なことは分からんが、OS開発ではアセンブラがしばしば使われていて、特にブートローダーの開発で使われていると聞いたことがあるな
他にはマイコンだとアセンブラの方が開発しやすいこともあったりするのか?知らんけど
俺は、スレッドセーフなプログラミングにはアセンブラの知識が不可欠だと思っているが、これは他者の意見も聞きたいところだな
他にもアセンブラでしか出来ないことはあるのにアセンブラは趣味の為ときたもんだ(怒)
まずコンパイラは確実
エミュレータなんかもそうじゃないのか?知らんけど
771デフォルトの名無しさん
2020/07/15(水) 14:24:49.32ID:miBvJk/V >>767
Linuxでは知らんが、VSのデバッガだと、EAXなどのマシンレジスタの内容を常時
表示できる。
スタックに関しては、push、pop を組にすることと、ちゃんと数える習慣を
付けるしかない。
アセンブラは、言語仕様は簡単に思えるかもしれないが、頭脳が必要。
それはちょうど、数学が小学生でも理解できる四則演算だけを組み合わせているだけ
なのに、大部分の人がどこかで難しくなってしまうのと同じようなもの。
Linuxでは知らんが、VSのデバッガだと、EAXなどのマシンレジスタの内容を常時
表示できる。
スタックに関しては、push、pop を組にすることと、ちゃんと数える習慣を
付けるしかない。
アセンブラは、言語仕様は簡単に思えるかもしれないが、頭脳が必要。
それはちょうど、数学が小学生でも理解できる四則演算だけを組み合わせているだけ
なのに、大部分の人がどこかで難しくなってしまうのと同じようなもの。
772デフォルトの名無しさん
2020/07/15(水) 14:29:36.15ID:PuirKKk2 残念な日本語を使う人って多いな
773デフォルトの名無しさん
2020/07/15(水) 14:41:03.67ID:cL9c5hZ8 知能は文章に滲み出る
774デフォルトの名無しさん
2020/07/15(水) 15:59:06.15ID:p6AIoBG7 知能はコードに滲み出る
775デフォルトの名無しさん
2020/07/15(水) 17:04:33.66ID:miBvJk/V 大事なのは、言語ではなく数学。
776デフォルトの名無しさん
2020/07/15(水) 17:58:36.45ID:vzNJtsb7 >>771
おまえが数学を知らないという事は良くわかった
おまえが数学を知らないという事は良くわかった
777デフォルトの名無しさん
2020/07/15(水) 18:23:23.15ID:bZTTdNA2 今時のGUIなデバッガだったらブレーク時にスタックやレジスタの内容を表示できるのは普通じゃね?
個人的にはパイプラインの動作状況を表示してくれるデバッガとか欲しいわ
依存関係に起因するNOP率とか、原因となっている命令の特定とか
個人的にはパイプラインの動作状況を表示してくれるデバッガとか欲しいわ
依存関係に起因するNOP率とか、原因となっている命令の特定とか
778デフォルトの名無しさん
2020/07/15(水) 18:40:28.77ID:miBvJk/V >>776
俺は数学は常時使っているのだが。
俺は数学は常時使っているのだが。
779デフォルトの名無しさん
2020/07/15(水) 18:48:34.73ID:JGqdiMCl >>778
数学を知らないヤツが数学を毎日使うと
数学を知らないヤツが数学を毎日使うと
780デフォルトの名無しさん
2020/07/15(水) 18:51:31.23ID:miBvJk/V781デフォルトの名無しさん
2020/07/15(水) 18:52:38.10ID:JGqdiMCl そう思ってるだけ
782デフォルトの名無しさん
2020/07/15(水) 18:55:17.94ID:miBvJk/V 学生時代に伝説を作ったし、同級生達は知っている。
783デフォルトの名無しさん
2020/07/15(水) 18:57:06.09ID:JGqdiMCl kwsk
784デフォルトの名無しさん
2020/07/15(水) 19:10:04.26ID:p6AIoBG7 アセンブラに詳しい人はスゴい人多いから失礼な態度はとらない方がいいと思う
785デフォルトの名無しさん
2020/07/15(水) 19:16:51.08ID:r/dLTGHk >>767
アセンブラだからと言って人間が1から10まで考えなくてもいいんだよ。
間違いやすい処理はできるだけソフトやツールにさせるように考え方を変えればいい。
スタックの状態が間違いやすいと思うなら、スタックを管理するマクロを組めばいいし、
レジスタ退避を忘れるなら、レジスタ退避するマクロを組んでそれを使えばいい。
アセンブラだからと言って人間が1から10まで考えなくてもいいんだよ。
間違いやすい処理はできるだけソフトやツールにさせるように考え方を変えればいい。
スタックの状態が間違いやすいと思うなら、スタックを管理するマクロを組めばいいし、
レジスタ退避を忘れるなら、レジスタ退避するマクロを組んでそれを使えばいい。
786デフォルトの名無しさん
2020/07/15(水) 20:52:17.63ID:LyK3DjqL その昔8051用のソフトをフルアセンブラで開発したことがある。デバッグは8個のLEDのみ
1500程度のコードだけどスタックや汎用レジスタの操作で苦労した記憶はないな
ペリフェラルの使い方等は大苦戦だったが
>>767は何を作っているのだろうか。IA-32ならともかくAMD64ならレジスタ本数も多いし
複雑なスタック操作をする機会は多くないと思うんだが
1500程度のコードだけどスタックや汎用レジスタの操作で苦労した記憶はないな
ペリフェラルの使い方等は大苦戦だったが
>>767は何を作っているのだろうか。IA-32ならともかくAMD64ならレジスタ本数も多いし
複雑なスタック操作をする機会は多くないと思うんだが
787デフォルトの名無しさん
2020/07/16(木) 03:00:41.32ID:noTJdW03 >>786
お気持ち分かります。
お気持ち分かります。
788デフォルトの名無しさん
2020/07/16(木) 12:38:48.59ID:Bj5j4Y6i 謎の隠しコマンド連発するやつか
789デフォルトの名無しさん
2020/07/16(木) 18:46:15.84ID:Zj8FcZKn790デフォルトの名無しさん
2020/07/16(木) 19:00:00.97ID:RhEyC4tQ >>789
誰と戦ってるの?
誰と戦ってるの?
791デフォルトの名無しさん
2020/07/16(木) 19:02:56.88ID:Zj8FcZKn792デフォルトの名無しさん
2020/07/16(木) 19:43:33.89ID:TL00gXcm スタックにデータ積んでサブルーチンに渡す時がずれやすい
793デフォルトの名無しさん
2020/07/16(木) 19:46:21.84ID:Zj8FcZKn 呼ぶ側がアセンブラ?
何のために?
趣味か?
何のために?
趣味か?
794デフォルトの名無しさん
2020/07/16(木) 20:09:12.31ID:ICgJPJoU 今のアセンブラの需要って
・OS等の低レイヤーの処理をする
・高速化。1クロックでも節約したい
・リアルタイム。nクロック後に○○を実行する必要がある
こんなもんか?
・OS等の低レイヤーの処理をする
・高速化。1クロックでも節約したい
・リアルタイム。nクロック後に○○を実行する必要がある
こんなもんか?
795デフォルトの名無しさん
2020/07/16(木) 20:10:47.57ID:Zj8FcZKn 趣味
796デフォルトの名無しさん
2020/07/16(木) 20:15:52.17ID:Zj8FcZKn リソースを極限までけちる (ROM/RAM)
797デフォルトの名無しさん
2020/07/16(木) 20:17:12.32ID:Zj8FcZKn 自己書き換えコード
798デフォルトの名無しさん
2020/07/16(木) 22:52:53.48ID:t94iKSIB アセンブラも使ってるって言うとカッコいいから
799デフォルトの名無しさん
2020/07/16(木) 22:54:17.68ID:Zj8FcZKn800デフォルトの名無しさん
2020/07/17(金) 02:55:00.98ID:xni+keKD >>798
この業界では、アセンブラが使える人と使えない人ではやはり使える人の方が尊敬されるよね
この業界では、アセンブラが使える人と使えない人ではやはり使える人の方が尊敬されるよね
801デフォルトの名無しさん
2020/07/17(金) 06:35:47.52ID:CFzyXZw3 そういう歪んだ価値観のせいで
アセンブラじゃなくて良い所までアセンブラにするアホがいる
アセンブラじゃなくて良い所までアセンブラにするアホがいる
802デフォルトの名無しさん
2020/07/17(金) 11:02:40.02ID:hPmghiPz 役に立ってる人は忙しいのでわざわざこんな辺鄙なところに描き込みに来る暇がない
自分も役に立ってない
自分も役に立ってない
803デフォルトの名無しさん
2020/07/17(金) 11:27:34.62ID:vcKdiH1z 仕事が生きがいですの社畜理論?
804デフォルトの名無しさん
2020/07/17(金) 12:58:33.29ID:hPmghiPz805デフォルトの名無しさん
2020/07/17(金) 14:04:20.27ID:xni+keKD >>801
Cが得意だと何でもCで書こうとする。
アセンブラが得意だと何でもアセンブラで書こうとする。
プログラマなら良くあること。
アセンブラがそれほど得意でない人が見たら余計なことと思うんだろうけど。
Cが得意だと何でもCで書こうとする。
アセンブラが得意だと何でもアセンブラで書こうとする。
プログラマなら良くあること。
アセンブラがそれほど得意でない人が見たら余計なことと思うんだろうけど。
806デフォルトの名無しさん
2020/07/17(金) 14:14:01.80ID:BZ2Y/mdT >>805
そういう人はエンジニアとして三流。賃金も三流で良い
そういう人はエンジニアとして三流。賃金も三流で良い
807デフォルトの名無しさん
2020/07/17(金) 14:36:42.77ID:R70AGkgr PICマイコンみたく用途が限られてると、返ってアセンブラの方が短かったりする。
808デフォルトの名無しさん
2020/07/17(金) 15:01:36.87ID:xXsIieN6 PICよりAVR
809デフォルトの名無しさん
2020/07/17(金) 16:45:31.89ID:mOeBhMfJ おいらがマシン語勉強した時(Z80A)ニモニック表見て作ってたね
相対ジャンプなんか手で計算して 今でもコード覚えてるよ LD A = 3E とか LD Bは06とか
アセンブラが手に入った時はなんて便利なんや〜と感動した
当時は子供でまさか仕事でもアセンブラ組むとは思わなかったけどね
相対ジャンプなんか手で計算して 今でもコード覚えてるよ LD A = 3E とか LD Bは06とか
アセンブラが手に入った時はなんて便利なんや〜と感動した
当時は子供でまさか仕事でもアセンブラ組むとは思わなかったけどね
810デフォルトの名無しさん
2020/07/17(金) 17:42:45.57ID:zYg36R0O http://www.yamamo10.jp/yamamoto/comp/Z80/instructions/index.php#LOAD08
A や B にイミディエイト値を入れる場合
00DDD110
DDD はレジスタ番号
B=0, C=1, D=2, E=3, H=4, L=5, A=7
LD B,n は 00000110 (06), n
LD A,n は 00111110 (3E), n
なんで DDD=6 は飛んでるんだっけ
A や B にイミディエイト値を入れる場合
00DDD110
DDD はレジスタ番号
B=0, C=1, D=2, E=3, H=4, L=5, A=7
LD B,n は 00000110 (06), n
LD A,n は 00111110 (3E), n
なんで DDD=6 は飛んでるんだっけ
811デフォルトの名無しさん
2020/07/17(金) 17:45:07.45ID:sm/+SVBD フラグかな
812デフォルトの名無しさん
2020/07/17(金) 17:45:11.86ID:zYg36R0O (HL) が DDD=110 相当にみえなくもないが
命令デコーダーの都合なんだろうな
命令デコーダーの都合なんだろうな
813デフォルトの名無しさん
2020/07/17(金) 21:14:06.39ID:2HBm6uJU >>806
他人の評価などどうでもいい。俺もそんな古くさい見方しかできないあんたを三流と言ってあげよう。
他人の評価などどうでもいい。俺もそんな古くさい見方しかできないあんたを三流と言ってあげよう。
814デフォルトの名無しさん
2020/07/18(土) 13:40:48.90ID:HDs6SbLj >>810
原則的には、DDD=6 は、(HL)に相当している。
原則的には、DDD=6 は、(HL)に相当している。
815デフォルトの名無しさん
2020/07/18(土) 13:46:42.99ID:uRU3MGLx IXとかIYの裏命令の話があるな
816デフォルトの名無しさん
2020/07/18(土) 13:49:01.14ID:HDs6SbLj >>814
昔の事だったし、資料が手元に無いが、原則論として
DDDとかのレジスタ番号の1つとして、(HL)が書いてあり、
それがDDD=6だったと思う。
ただし、原則論なので、全ての命令でDDD=6にすれば必ず合法で、
(HL)になるという意味ではない。
昔の事だったし、資料が手元に無いが、原則論として
DDDとかのレジスタ番号の1つとして、(HL)が書いてあり、
それがDDD=6だったと思う。
ただし、原則論なので、全ての命令でDDD=6にすれば必ず合法で、
(HL)になるという意味ではない。
817デフォルトの名無しさん
2020/07/18(土) 13:51:52.21ID:HDs6SbLj818デフォルトの名無しさん
2020/07/18(土) 13:56:24.86ID:B9g40Bu1 76: ぼくのことわすれないで
819デフォルトの名無しさん
2020/07/18(土) 14:24:37.73ID:HDs6SbLj AND, OR, XOR, ADD, ADC, SUB, SBC, CP,
やローテート、シフト命令でも、レジスタ様の命令で、
レジスタ番号を6にすると、(HL)に対する命令と同じ
マシン語になっていることが分かる。
やローテート、シフト命令でも、レジスタ様の命令で、
レジスタ番号を6にすると、(HL)に対する命令と同じ
マシン語になっていることが分かる。
820デフォルトの名無しさん
2020/07/19(日) 04:45:05.98ID:1aVreze3 x86_64のアセンブラを始めようと思ってるのですが、レジスタの使い方を教えてください
以前、80286の頃だと、たとえばECXレジスタはカウンタ用に使うものだったと記憶してますが
x86_64だとほぼもう汎用レジスタとして使えるように見えます
gccなどもx86_64用でもそういうコードを出力するようです
昔の用途での使い方について、どれくらい意識した方がよいのでしょう
以前、80286の頃だと、たとえばECXレジスタはカウンタ用に使うものだったと記憶してますが
x86_64だとほぼもう汎用レジスタとして使えるように見えます
gccなどもx86_64用でもそういうコードを出力するようです
昔の用途での使い方について、どれくらい意識した方がよいのでしょう
821デフォルトの名無しさん
2020/07/19(日) 10:17:20.71ID:TvRHHtME >>820
CPUの世代によっては、loop 命令は、
dec ecx
jnz ラベル名
とするよりも遅いことがあるので、後者の書き方の方が良い。
その意味で、ループカウンタを入れるレジスタとして、ecxにこだわる必要はない。
ただし、rep movsd などでは今でもカウンタが ecx に固定されている。
それ以外の場面では、ecxは、他の汎用レジスタと同じと考えてよい。
なお、ebpは汎用レジスタとしては使わず、スタックフレームの先頭アドレスを保持して、
ローカル変数をアクセスするために使うことが原則。
ただし、ローカル変数をebpの代わりにespを介してアクセスすることによって
ebpを汎用レジスタとして使う流儀も有り得る。
その場合は、push,pop命令によってespが変化してしまうので注意が必要となる。
なお、masmのlocalやarg擬似命令は、ebp方式を前提としている。
edi,esi は、movsd で使うことは意識しておく。
edx,eaxは、div命令で使うことを意識しておく。
edi,esi,ebpは、関数呼び出しで保存されるが、eax,ebx,ecx,edxは保存されないことを意識しておく。
eaxは関数呼び出しの戻り値になることを意識しておく。
CPUの世代によっては、loop 命令は、
dec ecx
jnz ラベル名
とするよりも遅いことがあるので、後者の書き方の方が良い。
その意味で、ループカウンタを入れるレジスタとして、ecxにこだわる必要はない。
ただし、rep movsd などでは今でもカウンタが ecx に固定されている。
それ以外の場面では、ecxは、他の汎用レジスタと同じと考えてよい。
なお、ebpは汎用レジスタとしては使わず、スタックフレームの先頭アドレスを保持して、
ローカル変数をアクセスするために使うことが原則。
ただし、ローカル変数をebpの代わりにespを介してアクセスすることによって
ebpを汎用レジスタとして使う流儀も有り得る。
その場合は、push,pop命令によってespが変化してしまうので注意が必要となる。
なお、masmのlocalやarg擬似命令は、ebp方式を前提としている。
edi,esi は、movsd で使うことは意識しておく。
edx,eaxは、div命令で使うことを意識しておく。
edi,esi,ebpは、関数呼び出しで保存されるが、eax,ebx,ecx,edxは保存されないことを意識しておく。
eaxは関数呼び出しの戻り値になることを意識しておく。
822デフォルトの名無しさん
2020/07/19(日) 10:18:46.24ID:TvRHHtME >>821
さらに、dec reg 命令より、sub reg,1 の方が速いことがある。
前者は2クロック、後者は1クロック。なので、loop文は、
sub ecx,1
jnz ラベル名
と書くのが最良。
さらに、dec reg 命令より、sub reg,1 の方が速いことがある。
前者は2クロック、後者は1クロック。なので、loop文は、
sub ecx,1
jnz ラベル名
と書くのが最良。
823デフォルトの名無しさん
2020/07/19(日) 12:34:39.03ID:h5vFOzT4824デフォルトの名無しさん
2020/07/19(日) 12:36:44.38ID:h5vFOzT4 レジスタが増えてるし
SIMDレジスタもあるんで
自由度は高い
MULとDIVは相変わらずRAX, RDX縛りがあるけど
SIMDレジスタもあるんで
自由度は高い
MULとDIVは相変わらずRAX, RDX縛りがあるけど
825デフォルトの名無しさん
2020/07/19(日) 12:47:27.95ID:du465xO7 IA-32の命令ならインテルのhpにある
826デフォルトの名無しさん
2020/07/19(日) 14:46:51.74ID:1aVreze3 820です
回答ありがとうございました
ABIやライブラリ等での使い方・縛りを考慮して使うようにすると、
やはりそれぞれのレジスタをアキュムレータ、カウンタ等として使う、
というのを指針にした方がよさそうですね
回答ありがとうございました
ABIやライブラリ等での使い方・縛りを考慮して使うようにすると、
やはりそれぞれのレジスタをアキュムレータ、カウンタ等として使う、
というのを指針にした方がよさそうですね
827デフォルトの名無しさん
2020/07/19(日) 15:35:41.18ID:AazHQwx2828デフォルトの名無しさん
2020/07/21(火) 11:55:19.37ID:08cjL+93 こんな感じで部品並べたら子ーどがてせきるやつないの?
amd64の
https://i.imgur.com/REDBsNI.png
https://i.imgur.com/NUN7ejI.png
https://i.imgur.com/Qchpsl1.png
amd64の
https://i.imgur.com/REDBsNI.png
https://i.imgur.com/NUN7ejI.png
https://i.imgur.com/Qchpsl1.png
829デフォルトの名無しさん
2020/07/27(月) 04:16:34.73ID:FDPJJmZc ない
830デフォルトの名無しさん
2020/08/03(月) 23:51:00.41ID:f8ly6bXL ttps://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%89%E3%83%AC%E3%83%83%E3%82%B7%E3%83%B3%E3%82%B0%E3%83%A2%E3%83%BC%E3%83%89
>アドレッシングモード
>既に使われなくなったアドレッシングモード
>メモリマップド・レジスタ
???国内なら78K0R(現RL78)、海外でもMSC-51(現EFM8BB1)とかはCPUのレジスタがメモリ空間にマッピングされている
いずれも現行製品では
>アドレッシングモード
>既に使われなくなったアドレッシングモード
>メモリマップド・レジスタ
???国内なら78K0R(現RL78)、海外でもMSC-51(現EFM8BB1)とかはCPUのレジスタがメモリ空間にマッピングされている
いずれも現行製品では
831デフォルトの名無しさん
2020/08/04(火) 10:47:29.79ID:DzQriKoF 6809の0-255あたりのやつのことかな
832デフォルトの名無しさん
2020/08/04(火) 10:48:39.15ID:DzQriKoF まあ同じことなんだろうけど
「CPUのレジスタがメモリ空間にマッピングされている」
というより
「メモリ空間がCPUのレジスタにマッピングされている」
というイメージ
「CPUのレジスタがメモリ空間にマッピングされている」
というより
「メモリ空間がCPUのレジスタにマッピングされている」
というイメージ
833デフォルトの名無しさん
2020/08/04(火) 11:41:48.61ID:WjyA4gdt イメージって何か表現してるようで何も言ってないに等しい
834デフォルトの名無しさん
2020/08/04(火) 12:45:04.95ID:g9THIEhB ttps://ednjapan.com/edn/articles/1908/28/news026_3.html
STMはレジスタとSRAMの構造が違うらしい
理由からすると多くのCPUが同じ事やってそう
STMはレジスタとSRAMの構造が違うらしい
理由からすると多くのCPUが同じ事やってそう
835デフォルトの名無しさん
2020/08/04(火) 13:23:59.89ID:9WSBhL2x この板でイメージを厳密に技術用語で使わないやつは…
836デフォルトの名無しさん
2020/08/04(火) 15:05:26.21ID:z2HwYjyf >>830
> CPUのレジスタがメモリ空間にマッピング
て具体的にどうやるんだろ?と思って調べてみた。
CPUのアドレスバスを監視して、レジスタにアクセスがあったのを検知したら、
それにマップされてるメモリにも同じようにアクセスするってことをしてると。なるほど。
> CPUのレジスタがメモリ空間にマッピング
て具体的にどうやるんだろ?と思って調べてみた。
CPUのアドレスバスを監視して、レジスタにアクセスがあったのを検知したら、
それにマップされてるメモリにも同じようにアクセスするってことをしてると。なるほど。
837デフォルトの名無しさん
2020/08/04(火) 15:22:33.51ID:CK7AS0VE >>836
そういうことではなく、レジスタをアドレス空間にマッピングしているCPUは、
例えば、アドレス空間の 0〜255 番地の部分をレジスタ専用に
して、CPUの外部のアドレスバスには信号が出ないようにしていることが多い。
そして、
mov [0],値
と書くと、r0 に「値」を書き込むようにCPUが設計されていて、
外部のDRAMなどには全く信号が送られないようになっている。
そういうことではなく、レジスタをアドレス空間にマッピングしているCPUは、
例えば、アドレス空間の 0〜255 番地の部分をレジスタ専用に
して、CPUの外部のアドレスバスには信号が出ないようにしていることが多い。
そして、
mov [0],値
と書くと、r0 に「値」を書き込むようにCPUが設計されていて、
外部のDRAMなどには全く信号が送られないようになっている。
838デフォルトの名無しさん
2020/08/04(火) 15:30:51.43ID:z2HwYjyf >>837
そういうのもあるだろうけど、それは最初からそういう設計にしているからそう動くということだよね。
アドレス空間にある入出力領域は固定的である必要はないので、バスに出た信号をどう処理するかは
設計者が自由に決められるはず。なので、バスに出た信号をメモリだけに送ることもできるし、
CPUとメモリ両方に送ることもできる。用途に合わせればいいということかと。
そういうのもあるだろうけど、それは最初からそういう設計にしているからそう動くということだよね。
アドレス空間にある入出力領域は固定的である必要はないので、バスに出た信号をどう処理するかは
設計者が自由に決められるはず。なので、バスに出た信号をメモリだけに送ることもできるし、
CPUとメモリ両方に送ることもできる。用途に合わせればいいということかと。
839デフォルトの名無しさん
2020/08/04(火) 15:34:19.50ID:CK7AS0VE840デフォルトの名無しさん
2020/08/04(火) 16:20:06.60ID:z2HwYjyf841デフォルトの名無しさん
2020/08/04(火) 19:31:24.43ID:aUyBUHRY >>837
ああ、ずっと何の話をしてるのか分からなかったけど0ページの話ね。
ああ、ずっと何の話をしてるのか分からなかったけど0ページの話ね。
842デフォルトの名無しさん
2020/08/16(日) 16:21:04.44ID:Cqk7CoxF >>839 アルディーノのCPUがそれだ。レジスタがメモリにマッピングされている。
843デフォルトの名無しさん
2020/08/17(月) 08:09:56.01ID:tzd42ouk LLVMが吐き出したx86-64アセンブラコードを入力とするツールを作りたいのですが
このアセンブラコードの文法に関する資料って何処にあるんでしょうか
ttps://llvm.org/docs/Extensions.html
ttps://sourceware.org/binutils/docs/as/
あたりにも各命令をどのように記述するかまでは載っていないように見えるのですが・・・
このアセンブラコードの文法に関する資料って何処にあるんでしょうか
ttps://llvm.org/docs/Extensions.html
ttps://sourceware.org/binutils/docs/as/
あたりにも各命令をどのように記述するかまでは載っていないように見えるのですが・・・
844デフォルトの名無しさん
2020/08/17(月) 10:11:33.24ID:RiKJFl8Z 命令セットレベルの話ならインテルのマニュアルでも見ろとしか。
845デフォルトの名無しさん
2020/08/17(月) 11:34:25.89ID:NVTg5S9X >>843
Intelに大量の PDF マニュアルがあり、詳細に書いてある。
Intelに大量の PDF マニュアルがあり、詳細に書いてある。
846デフォルトの名無しさん
2020/08/17(月) 11:37:24.90ID:NVTg5S9X >>843
LLVMツールの出力する、native の x86 や x64 のアセンブリコードは、
試してみる限り、masm 形式ではない。
見た目はgccの形式に似ている。
LLVMのarm版が出力したnativeアセンブリコードは、gccのgasが解釈して正しくobjファイル
までアセンブルできたことがある。
x86 や x64 の場合は、そこまでは試していない。
LLVMツールの出力する、native の x86 や x64 のアセンブリコードは、
試してみる限り、masm 形式ではない。
見た目はgccの形式に似ている。
LLVMのarm版が出力したnativeアセンブリコードは、gccのgasが解釈して正しくobjファイル
までアセンブルできたことがある。
x86 や x64 の場合は、そこまでは試していない。
847843
2020/08/17(月) 12:59:34.65ID:WGW93JMF848デフォルトの名無しさん
2020/08/18(火) 01:12:29.19ID:xqTakpBf >>847
命令表記は、8バイトのオペランド(や型)を表すのにdqwordとowordで表す
2つの流儀がある。
さらに、mmwordを使う流儀もあるが、浮動小数点演算のx87の文化では
浮動小数点でも専用の型名は無くて、dwordでfloat、qwordでdoubleを扱う
流儀があった。
そこにxmmやmmxのためだけにmmwordを持ってきた意図やセンスは
賛否が分かれるところだと思う。
命令表記は、8バイトのオペランド(や型)を表すのにdqwordとowordで表す
2つの流儀がある。
さらに、mmwordを使う流儀もあるが、浮動小数点演算のx87の文化では
浮動小数点でも専用の型名は無くて、dwordでfloat、qwordでdoubleを扱う
流儀があった。
そこにxmmやmmxのためだけにmmwordを持ってきた意図やセンスは
賛否が分かれるところだと思う。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 上野動物園の双子パンダ、1月末に中国に返還へ 国内でパンダ不在に [蚤の市★]
- サナエノミクスについて力説 積極的な財政出動で「所得増える 消費マインド上がる 税収増える」片山さつき財務大臣 ★3 [少考さん★]
- 中国軍機のレーダー照射1週間 駆け引き続く 中国、米のレッドライン模索 日本、米以外の同志国とも連携探る 米は対立から距離置く★2 [ぐれ★]
- 鈴木農相「おこめ券はお米しか買えないわけではない。例えば卵、味噌、しょうゆ、こうした購入に利用可能」 ★4 [Hitzeschleier★]
- 【芸能】粗品、日本テレビに苦言 客のレベルが「かなり低い。あいつら分かってない」「拍手したいだけやねん」 [冬月記者★]
- 橋下徹氏「総理なら岡田さんに何を聴かれても耐えてほしかった」 高市首相の台湾有事めぐる答弁に# [jinjin★]
- 【悲報】成瀬は天下を取りに行くってラノベを読んだんだけど、質問だが、成瀬って『処女』なのか? [483447288]
- 【米国側沈黙】中国爆撃機を出動させた“台湾発言”…高市の“アドリブ”だった! [979264442]
- 遊戯王やってる奴スレ
- (財務)片山さつき『サナエノミクス💕』開始。「所得、経済、税収全てが上がる夢のような政策」 [153490809]
- 【動画】近所の交差点で事故った車が横転しててワロタwww
- 今年の大晦日も、孤独のグルメスペシャルだ。
