[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 09/06 12:27 / Filesize : 234 KB / Number-of Response : 1016
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け 160



1 名前:デフォルトの名無しさん mailto:sage [2022/12/28(水) 10:40:30.02 ID:PyoNDBFu0.net]
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
codepad.org/

C17
www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf

C11
www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C23 最新ドラフト
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.pdf

C99
www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/

※前スレ
C言語なら俺に聞け 159
https://mevius.5ch.net/test/read.cgi/tech/1659623547/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

496 名前:デフォルトの名無しさん mailto:sage [2023/02/20(月) 21:19:52.57 ID:I5iz8R+L0.net]
>>490
戻りのpopはそれでいいけど呼び出しのpushは処理がぶった切れるから
gotoがないとかなりややこしい変換になるよ

497 名前:デフォルトの名無しさん mailto:sage [2023/02/20(月) 23:51:00.80 ID:7qph/rf50.net]
>>485
push/pop はルール違反
それに二方向、多方向への再帰はそう簡単じゃないですけどね
二分木の全要素を列挙する非再帰プログラムを書いてください

498 名前:デフォルトの名無しさん mailto:sage [2023/02/21(火) 00:08:57.34 ID:Cn1Xq+JJ0.net]
がんばってgoto無しで作ったりしてたなあ

499 名前:デフォルトの名無しさん mailto:sage [2023/02/21(火) 06:59:46.53 ID:1n1W4gUgd.net]
push/popはルール違反て何それ?

500 名前:デフォルトの名無しさん mailto:sage [2023/02/21(火) 09:59:11.37 ID:MGN7/c1b0.net]
「俺がルールブックだ」

501 名前:デフォルトの名無しさん mailto:sage [2023/02/21(火) 10:33:24.95 ID:5S8ZyEUUd.net]
「ウリが蟹飯リッチニダ」

502 名前:デフォルトの名無しさん [2023/02/21(火) 10:51:10.49 ID:NudgdpLh0.net]
豪華な蟹飯が思い浮かんだ

503 名前:デフォルトの名無しさん (スプッッ Sd43-avQ1) mailto:sage [2023/02/21(火) 13:43:23.05 ID:1n1W4gUgd.net]
苫小牧だっけ?

504 名前:デフォルトの名無しさん (アウアウエー Sa13-1XUy) mailto:sage [2023/02/21(火) 16:27:46.36 ID:dWpsoJfPa.net]
>>436
>>481
テスト
https://ideone.com/iPWHR0



505 名前:デフォルトの名無しさん (ワッチョイ 755f-rVJW) mailto:sage [2023/02/21(火) 16:50:09.17 ID:ncQgkmT30.net]
チャットジピティれカ

506 名前:X []
[ここ壊れてます]

507 名前:デフォルトの名無しさん (スププ Sd43-CAVk) mailto:sage [2023/02/21(火) 17:05:45.18 ID:j4WOJdo9d.net]
>>499 見事です 私はまだ初級なのでvectorだのcstdioなど見たこともありません

508 名前:デフォルトの名無しさん (スップ Sd43-Tk/Z) mailto:sage [2023/02/21(火) 17:54:02.02 ID:5S8ZyEUUd.net]
>>499
お、動いた動いた!

509 名前:デフォルトの名無しさん (ワッチョイ cb63-BTrK) mailto:sage [2023/02/21(火) 17:55:02.20 ID:MGN7/c1b0.net]
goto が一つもない・・・

510 名前:デフォルトの名無しさん (アウアウウー Sa49-UkxH) mailto:sage [2023/02/21(火) 19:30:27.79 ID:oAMbgY5Ra.net]
goto文は禁じてではないかな?
C言語では

511 名前:デフォルトの名無しさん (スプッッ Sd43-avQ1) mailto:sage [2023/02/21(火) 19:48:08.10 ID:1n1W4gUgd.net]
俺様ルールは興味ないから

512 名前:デフォルトの名無しさん (ワッチョイ cb63-BTrK) mailto:sage [2023/02/21(火) 19:50:05.73 ID:MGN7/c1b0.net]
CPUレベルまで行くと、GOTOは使いまくりだろう

513 名前:デフォルトの名無しさん (スプッッ Sd43-avQ1) mailto:sage [2023/02/21(火) 19:57:40.07 ID:1n1W4gUgd.net]
機械語1命令ごとにPCを更新するのもgotoかw

514 名前:デフォルトの名無しさん (テテンテンテン MMcb-7AbM) mailto:sage [2023/02/21(火) 20:39:53.11 ID:pHGJPw2cM.net]
gotoなんて所詮関数内にしか飛べない
関数が小さければなんて事はない
巨大な関数はgoto以前に悪



515 名前:デフォルトの名無しさん (ワッチョイ cb63-BTrK) mailto:sage [2023/02/21(火) 21:02:34.32 ID:MGN7/c1b0.net]
昔いた現場は、1関数ごとに設計書を何枚も書かされてたな
それでみんな、関数の数を極力減らしてた
行き着くところ初期とメインと終了の三つ
それぞれが何百行にもなってしまったw

516 名前:デフォルトの名無しさん (ワッチョイ 2379-u8a6) mailto:sage [2023/02/21(火) 22:12:19.48 ID:QJTSRl8U0.net]
そういうのいいから

517 名前:デフォルトの名無しさん (ワッチョイ e379-+91A) mailto:sage [2023/02/21(火) 22:59:26.21 ID:fpEKur8e0.net]
硬直化して目的を忘れた「管理」に泣かされたもんだけど
それは昭和も今も変わっとらんだろ

518 名前:デフォルトの名無しさん (ワッチョイ cb63-BTrK) mailto:sage [2023/02/21(火) 23:48:29.43 ID:MGN7/c1b0.net]
プロジェクト管理はそのうちAIがやるようになるんだろうか

519 名前:デフォルトの名無しさん mailto:sage [2023/02/22(水) 03:11:04.32 ID:ZjvNTHuW0.net]
AI「壊れるまで働け、人間共よ」

520 名前:デフォルトの名無しさん mailto:sage [2023/02/22(水) 06:39:57.73 ID:6aYkdgkrd.net]
>>491
continueを知らないのか?

521 名前:デフォルトの名無しさん mailto:sage [2023/02/22(水) 15:13:03.32 ID:rwr+6TWF0.net]
>>415
やはり構文解析器(プリプロセッサ含む)に手を入れないとデリミタに'は難しそうに思うの

暇だったので>>413を(ナイーブに)
# define b(n) (strint(#n, 1u))
# define t(n) (strint(#n, 2u))
# define o(n) (strint(#n, 3u))
# define x(n) (strint(#n, 4u))
unsigned
strint(const char cs[], const unsigned wt){
long d;
unsigned u=0;
do { // valid digis: ascii '0'..'^'
if((d=*cs)<0||d>'_'-'0'+1) continue;
u<<=wt, u+=d;
} while(*cs++)
return u
}

b('1100'1010'1111'1110)
b(1100_1010_1111_1110)
o(145;366)
x(<:!?>)
全て0xCAFEに等しい、ただし' が奇数個のケース、 b(1100'1010'1111'1110)
マクロ引数を区切る,の使用はプリプロセッサがエラー吐く(cc -Eの段階)
missing terminating '/" character
too much argument
etc. (pcc/tcc)

ex/m4とか外部ツールでプリプロセスするなら別だけど、c/cプリプロセッサの構文内では不可能に思う(当然リテラルとして自然な仕様拡張も)

522 名前:デフォルトの名無しさん mailto:sage [2023/02/22(水) 15:22:17.41 ID:mafEi4nvd.net]
>>467
アセンブリやいにしえの言語は明示的なdecimal prefixを持ってるね
forthだと#123と変種?の&123
#の方がthe (decimal) 123と読めて個人的に好み

523 名前:デフォルトの名無しさん mailto:sage [2023/02/22(水) 15:23:53.30 ID:mafEi4nvd.net]
the (decimal) number 123です

524 名前:デフォルトの名無しさん mailto:sage [2023/02/22(水) 15:28:02.92 ID:mafEi4nvd.net]
299,792,458と書けたら素敵だけど
ds(299,792,458)が引数を区切る,と区別出来ないから無理だね



525 名前:デフォルトの名無しさん mailto:sage [2023/02/22(水) 16:23:34.63 ID:GDrSYSMbM.net]
ほかの言語では、123_456_789の様にアンダーバーで区切るのが多い
Cでも出来たと思うけどなぜか'なんだよな…
アンダーバーが良かった

526 名前:デフォルトの名無しさん mailto:sage [2023/02/22(水) 16:41:13.08 ID:3MJ5isf30.net]
C++に合わせたんでしょその方が都合がいいだろうし

527 名前:デフォルトの名無しさん mailto:sage [2023/02/22(水) 16:52:25.15 ID:3MJ5isf30.net]
規格の紹介をしてる>>415に対してそれは解析器を変えないと難しいとか言ってる>>515は何なんだ?
C23でこうなります、なんだから難しいもクソもないと思うんだが笑

528 名前:デフォルトの名無しさん mailto:sage [2023/02/22(水) 18:12:39.68 ID:/HhOnmf9d.net]
規格を批判してるんだが

529 名前:デフォルトの名無しさん mailto:sage [2023/02/23(木) 02:20:36.04 ID:zOdHjjZs0.net]
まだワーキングドラフトだから対応するもしないのも自由だと思うし、c2xはアトリビュート関連くらいしか追ってないが、一応意見を

せめて不正なトークンとして弾ける約物にしてほしいな
0b10101011未対応(0cでも何でも)は不正な8進
トークン構成文字0b1010_1011なら不正な型サフィックスとして不正なトークンを報告できるので、ユーザに手直しさせるのも自明
パース状態をトグルする'はEOFまで食うので、エラーが報告されたとしてもcryptic

頻用したと仮定すれば、1/2の確率で釣り合うって字句解析をパスしてしまうのも厄介

530 名前:デフォルトの名無しさん mailto:sage [2023/02/23(木) 04:08:08.64 ID:zOdHjjZs0.net]
>>416
俺は16bit程度なら一行で書いてしまうけど、より大きい整数型なら行を分けて書いてるな
(u)int64/128_tなんかで二次元データエンコードする時はこんな感じで

uint64_t plaid = 0b\
01010101\
10101010\
...\
;

ゲーム盤、行列、画像、畳み込みカーネル、マスク等、重宝する機会は多い

pbmそのままだからstatic変数にスクリプトでブチ込むのも楽で非常に重宝
普通(2)/8/10/16のみで任意進数(ビット深度)を指定できないのが歯痒いところ

531 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 15:46:50.99 ID:2A7WVGnna.net]
C++におけるユーザー定義の接尾辞で
_数字 みたいな奴を許可していなかったら桁区切り文字はアンダースコアになってた

532 名前:デフォルトの名無しさん mailto:sage [2023/02/26(日) 07:07:10.46 ID:Gr0Cvu5K0.net]
だな

533 名前:デフォルトの名無しさん mailto:sage [2023/02/26(日) 07:37:36.32 ID:oQAKiXWbd.net]
自己参照構造体を、テキストのコードが難しくて理解できない

534 名前:デフォルトの名無しさん mailto:sage [2023/02/26(日) 07:49:42.99 ID:ymHOkbuH0.net]
>>525
まさか4567_8(→4567 of type "8")?
珍妙な…



535 名前:デフォルトの名無しさん mailto:sage [2023/02/26(日) 07:58:07.27 ID:ymHOkbuH0.net]
extern "C"で混ぜるにはもう違いが多過ぎるし、c++と足並み揃えるのやめればいいのに

536 名前:デフォルトの名無しさん mailto:sage [2023/02/26(日) 08:42:57.62 ID:Gr0Cvu5K0.net]
C++が流行りだした当時のCの財産を捨てずに済むってだけの話で
これから新しく作るものの足かせになるのは本末転倒だよな

537 名前:デフォルトの名無しさん mailto:sage [2023/02/26(日) 12:16:51.44 ID:0OyaNSrI0.net]
C言語で構造体の双方リンク理解する前にテキストエディタ作るようなことあったら
激重エディタつくってただろうなぁと経験してもないことを妄想。

1文字挿入→その後ろの文章を全部コピーでずらして・・・

538 名前:デフォルトの名無しさん mailto:sage [2023/02/26(日) 18:12:24.76 ID:zCQzTRZzM.net]
>>531
emacs なんかは1文字挿入のたびに後ろ全部コピーしなくても良いようにギャップバッファという手法を使っていた

539 名前:デフォルトの名無しさん mailto:sage [2023/02/26(日) 18:34:27.49 ID:akN/HRard.net]
>>532
emacs!
Esc x compile
に何度も助けられた
一人で五万行くらいのコードを書いてたからな
ヘッダーファイルだけで50くらいあった

540 名前:デフォルトの名無しさん (テテンテンテン MM0e-CSgJ) mailto:sage [2023/02/26(日) 20:20:17.76 ID:Qgs0XTsDM.net]
>>532
過去形だけど今もだぞw
ギャップバッファは、最近流行りの複数カーソル使って離れた複数箇所を一気に編集すると、大量にコピーが発生して重くなる可能性がある
なのでこれからテキストエディタを実装するには、Piece Tableを使う方がいいと思われる

541 名前:デフォルトの名無しさん (ワッチョイ 76cf-okFi) mailto:sage [2023/02/26(日) 20:22:02.57 ID:OdlyZwjm0.net]
Slackware+JEに入ってたMuleを3年くらい使ってたけど別のエディタに移っちゃったな
悪くないと思うんだけど時代に合ってないというか、貧相な環境の方が使い出があるエディタだったな

542 名前:デフォルトの名無しさん (テテンテンテン MM0e-CSgJ) mailto:sage [2023/02/26(日) 20:31:33.93 ID:Qgs0XTsDM.net]
EmacsとかVimを貧相と思うのは、端末内で動かせるようになってるからだ
GUIはオマケみたいな扱いだ
でも、それはそれで存在意義はある

543 名前:デフォルトの名無しさん (ワッチョイ da79-Arif) mailto:sage [2023/02/26(日) 20:37:35.64 ID:gahU4Yv80.net]
viは来世紀にも残ってそうだから最初に覚えたなあ
eなんとかはデベロッパーのオナニーが透けて見えて気持ち悪すぎた

544 名前:デフォルトの名無しさん (ワッチョイ 7663-W5vA) mailto:sage [2023/02/26(日) 21:16:43.25 ID:fbmwPkIL0.net]
viの様にコマンド覚えなくても使えたから便利だったぞ



545 名前:デフォルトの名無しさん (ワッチョイ 76cf-okFi) mailto:sage [2023/02/26(日) 22:04:54.83 ID:OdlyZwjm0.net]
>>536
ちゃう、Emacsを貧相だと思ってるんじゃなくて計算機資源が豊かでない環境の方が使い出があるって言ってるんだよ

546 名前:デフォルトの名無しさん (ワッチョイ 7db3-sBbk) mailto:sage [2023/02/26(日) 22:36:28.47 ID:0m6hfJUV0.net]
最初に使い込んだエディタの話?
俺はVZだったな

547 名前:デフォルトの名無しさん mailto:sage [2023/02/27(月) 04:08:09.05 ID:naBje3l2d.net]
スレちがいだし
わりとしょうもないレベルの自慢話になってることを警告しておくぞ

548 名前:デフォルトの名無しさん mailto:sage [2023/02/27(月) 07:30:50.50 ID:U2h1s9M4d.net]
ダム端末使ってた頃はviが有り難かったけど
今となっては当時慣らした人はともかく
若いやつにお奨めするもんじゃない
と俺は思うな

549 名前:デフォルトの名無しさん mailto:sage [2023/02/27(月) 09:43:18.06 ID:jlyK/+pC0.net]
>>531
素のCだと何もないからデータ型を一つ一つ自分で理解していけていいという意味?
例えばC++ならlistがあるから理解しないままになる?
でもlistとvectorの違いを知らなければ結局

550 名前:デフォルトの名無しさん mailto:sage [2023/02/27(月) 12:21:44.99 ID:3zla3lE+0.net]
>543
Cやる前はアセンブラだったからねぇ。アセンブラでの処理方法をそのままC言語に持ち込んでた。
当時はでっかく領域確保したらその領域で全部処理するって思考しか無かった(自動変数って概念も無し)。

551 名前:デフォルトの名無しさん mailto:sage [2023/02/27(月) 12:29:45.17 ID:U2h1s9M4d.net]
ダミーセクションは使ってたけどね

552 名前:デフォルトの名無しさん mailto:sage [2023/02/27(月) 17:11:48.94 ID:3MgFEhuya.net]
>>543
そこはdequeですよ常考

553 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 10:24:33.59 ID:7/0mM3ia0.net]
>>544
>自動変数って概念も無し

自分はデバッグでディスアセンブルを読むぐらいしか用事がないんだけど、
ゼロからアセンブリを書く場合はスタックの操作で領域管理したりはしないと?

554 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 10:32:54.86 ID:7/0mM3ia0.net]
>>546
listやvectorはほとんど使わない感じ?



555 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 12:10:45.99 ID:dNNgH11Kd.net]
スタックはレジスタのバックアップが主な用途で
メモリ変数はグローバルがデフォだった
だから変数表を作ってた

556 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 16:07:40.92 ID:Ki6W+L2N0.net]
あの 先頭に戻って検索 するかどうかを維持する変数名ってどんなのがいい?

557 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 16:44:22.88 ID:295BsPXb0.net]
>スタックの操作で領域管理
8086系だとスタックレジスタ直接使うと遅いんじゃなかったっけ?
MOV AX、[SP+10]
とかやるより
MOV AX、[TEMP]
...
TEMP: DW 0000h

ってやる方が速いとか。



BASIC時代のマシン語CALL時のレジスタエリアは16バイトってトラウマが・・・。

558 名前:デフォルトの名無しさん [2023/02/28(火) 21:38:56.96 ID:EshvOxGGa.net]
ダミーセクションって、IBMのメインフレームのアセンブリ言語の DSECTですか?

559 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 21:47:36.63 ID:svcsEAcG0.net]
うん

560 名前:デフォルトの名無しさん mailto:sage [2023/03/01(水) 20:42:10.06 ID:fErXdR4ud.net]
>>550
auto_reverse
絶対これにしなさい

561 名前:デフォルトの名無しさん mailto:sage [2023/03/01(水) 23:36:37.44 ID:5C60qBo90.net]
>>550
cyclic

562 名前:はちみつ餃子 mailto:sage [2023/03/02(木) 00:05:39.48 ID:pZfd6NSK0.net]
そういうのはいわゆる自転車小屋の議論になりがち。
そこそこ盛り上がりはすることもあるかもしれないけどあまり意味のある結論は出ないよ。

563 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 03:04:30.24 ID:eGjuMjwU0.net]
するか否か、1ビットのフラグの命名に他者を巻き込む議論が本当に必要ですかということか
すなわち名前はflagとかで変数宣言部に日本語コメントでも添えた方が建設的ということだな?違うか?

564 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 07:06:54.36 ID:xa7MSIOTd.net]
変数名の付け方は案件による
無論、一般論などない
主観と思い込みで強弁するやつはいるけどね



565 名前:デフォルトの名無しさん [2023/03/02(木) 09:03:08.54 ID:GoAAqo+J0.net]
C-gengo wa mada nihon-go kakenai no?

bool 先頭に戻って検索 = 真 ;

566 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 16:32:03.69 ID:N0PfEOQ90.net]
質問の仕方でどういうコード書いてるか垣間見えるのはあるな
int searchtype = FROM_TOPとかBOTTOMとかBACKWARDみたいな持ち方ならそんな質問出ないだろうし

567 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 17:21:24.58 ID:y83mRLNqd.net]
>>551
どのCPUでもダイレクト指定が速いに決まっとりまんがな
レジスタ相対はレジスタにディスプレースメントを加算してからアドレス出力するんだから

568 名前:はちみつ餃子 mailto:sage [2023/03/03(金) 01:19:24.14 ID:5ZXS0iFm0.net]
>>561
個々の命令の速度で考えればその通りだが今どきの CPU だと
パイプラインに隠れて差が出ない (差があっても観測不能なほどの極小) ってことも普通にあるんじゃないの?

569 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 08:02:43.32 ID:an7QtCXRd.net]
1Hzぐらいの速度で計測すれば何かわかるかもしれない

570 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 08:14:12.93 ID:jW6Dg0m70.net]
1Hzだと速度的には1秒周期なので測定の意味がない

571 名前:デフォルトの名無しさん (ワッチョイ 7663-W5vA) mailto:sage [2023/03/03(金) 22:40:53.27 ID:1TAJ9GtV0.net]
もしかするとCPUクロックをそこまで落としてデバッグしたいとかw

572 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 06:01:07.88 ID:2lfmGWRw0.net]
[sp+10]はメモリアクセス1回だが
[temp]は2回だな
8086だとキャッシュないからメモリのウエイト数の影響をモロに受ける
どciscでパイプラインなんかないし

573 名前:デフォルトの名無しさん (スッププ Sd33-0t2P) mailto:sage [2023/03/04(土) 19:01:51.83 ID:siYz8HOgd.net]
Cのコードを書くのにアセンブラまで意識するのか、、
立派な心がけあるな
精進しなされ

でも、CPUやコンバイラで違うじゃん、、、

574 名前:デフォルトの名無しさん [2023/03/04(土) 21:31:31.02 ID:mhQJa69K0.net]
>>566
勘違いしてない?



575 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 21:33:37.98 ID:K3zEUrJN0.net]
[sp+10]が1回なら[temp]も1回じゃね
命令のフェッチは数えないんでしょ?

プリフェッチはパイプラインみたいなもんじゃね?

576 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 23:58:44.62 ID:D8X7oasM0.net]
素の8086にsp使えるアドレッシングはないのでbpで…
mov ax, [bp+disp] 命令3~4バイト 8+9クロック
mov ax, [TEMP] 命令4バイト 8+6クロック
と実効アドレスの計算時間に差があったという大昔のお話

577 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 06:15:37.72 ID:nSao/Dea0.net]
>>568
何が?

578 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 06:58:01.26 ID:94fNx05VM.net]
8086には現在のような深いパイプラインは無いがそれでもEU(Execution Unit : 実行ユニット)とBIU(Bus Interface Unit : バスインタフェースユニット)は独立しており
メモリアクセスと内部のALUはそれぞれ別々に動作する
ある意味初歩的な2段パイプラインとも言える構造で単純なクロックサイクルの加算とはならない

579 名前:デフォルトの名無しさん [2023/03/05(日) 07:13:34.61 ID:cmZGkkdl0.net]
>>571
>[temp]は2回だな
なぜ2回?

580 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 08:11:12.86 ID:nSao/Dea0.net]
>>573
temp: dw 0000h
つまりtempはメモリに置かれている
tempのREADで1回、
[]によるインダイレクトでもう1回
だろ

581 名前:デフォルトの名無しさん (ワッチョイ 13ad-NCuH) mailto:sage [2023/03/05(日) 12:43:47.21 ID:nmaj3sub0.net]
>>567
昔昔はそういうものだったんよ。
Cは、
・プログラマの責任において何でもできる
・コンパイラはプログラマの意思に忠実であれ(余計な最適化なんかするんじゃねえ!)
ってこと。だから、
a=a+1;と、a++;は違う。
前者は加算命令、後者はインクリメント命令になってほしいというのが、プログラマの意志。
ただ、Cが色々な場で広く使われるようになって、最適化を進めるしかなくなったから、そんなのどうでもいいことになったけど。

582 名前:デフォルトの名無しさん (ワッチョイ 1969-zdzo) mailto:sage [2023/03/05(日) 12:47:05.12 ID:s1YdjeUN0.net]
>>574
だからさ……それを2回っていうなら、[sp+10]も2回だろ

583 名前:デフォルトの名無しさん (ワッチョイ d163-PMd1) mailto:sage [2023/03/05(日) 13:30:59.36 ID:nSao/Dea0.net]
>>576
何で?
即値はフェッチ時点で取り込まれているのに

584 名前:デフォルトの名無しさん (ワッチョイ 1969-zdzo) mailto:sage [2023/03/05(日) 15:05:57.71 ID:s1YdjeUN0.net]
>>577
tempもtemp自体は即値だよ
[sp+10]と[temp]の違いはレジスタ相対かどうかだけ



585 名前:デフォルトの名無しさん (ワッチョイ 13ad-Qpn1) [2023/03/05(日) 15:07:29.13 ID:YlwUczDE0.net]
>>575
ま、しかし、昔はコンパイラの最適化がしょぼかったというのもあるな。
CPU (特に 8 bit CPU とか) がC言語等のいわゆる高級言語を全く意識して作られていないというのが最大の問題だったのかも知れないが。

586 名前:デフォルトの名無しさん (ワッチョイ d163-PMd1) mailto:sage [2023/03/05(日) 15:41:40.37 ID:nSao/Dea0.net]
>>578
DWディレクティブで定義してるんだからリテラルの類だよ
命令コードと一緒にフェッチされる即値とは根本的に違う

587 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 16:48:35.64 ID:0aHQQO/od.net]
>>577
CPU仕様によるが
68000では8ビット範囲以内のディスプレースメントは命令中に含まれてたが
8086はどうだっけ…

588 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 17:03:05.50 ID:nSao/Dea0.net]
>>581
いやここはCPU仕様には関係ないぞ
68kにしたってdc.lディレクティブで置いた定数はディスプレースメントじゃないし

589 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 17:27:59.49 ID:0aHQQO/od.net]
間違い、>>581は6809の話だった…


ややこしくなってるが
MOV AX、[SP+10]
がspレジスタから10バイト後を読むなら
MOV AX、[TEMP]
はアドレスTEMPを読む意味だろ

8086ニーモニックをよく知らないが

590 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 17:44:11.51 ID:nSao/Dea0.net]
>>583
6809にしたってFDBディレクティブで置いた定数はディスプレースメントじゃないし

591 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 18:29:27.81 ID:On/jxRV/0.net]
#include <stdio.h>
#include <math.h>

void main(void){
double a, b, c;
double x1;

a = 4;
b = -3;
c = 1;
x1 = (-b + sqrt(pow(b,2) - 4*a*c)) / (2 * a);
printf("%f\n", x1);
}

printfが-nanて表示します。これはどういう意味でしょうか?

592 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 18:43:57.85 ID:KnQWIUK4d.net]
>>585
コンバイラかて人間や
こんなつまらん二次方程式の解をなんぞ解きたくない

そう言う意思表示や

593 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 18:53:30.15 ID:M62PQQGq0.net]
>>585

printf("(%f)\n",pow(b,2) - 4*a*c);

594 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 19:03:21.29 ID:On/jxRV/0.net]
あー、なんかわかってきました
そういうことか
サンクス



595 名前:はちみつ餃子 mailto:sage [2023/03/05(日) 19:07:20.35 ID:AE3nXsIn0.net]
>>585
sqrt に負数を渡した場合には定義域エラーとなり、定義域エラーのときは処理系定義の値を返す。
その処理系では処理系定義の値というのが nan だということになる。
言語仕様では詳細は規定されていないけれど
一般に浮動小数点の表現として使われる IEEE 754 などでは非数 (not a number) を表現のひとつとして持ち、
意味のある計算結果にならなかったときは非数がセットされる。
not a number の略で NaN 。

処理系によっては定義域エラーをハンドリングする方法を用意してあることもあるけど、
発生させないように事前にチェックしたほうが基本的には簡単だと思う。

596 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 19:21:09.18 ID:0aHQQO/od.net]
よくわからないんだが
>>574が勘違いだな

TEMP: dw 0000h
はデータ0000hをメモリに置いてそのアドレスをTEMPと定義するという命令(アセンブラ疑似命令)

MOV AX,TEMP
はAXレジスタにそのアドレス値を入れる
MOV AX,[TEMP]
はAXレジスタにそのアドレスの内容(0000H)を入れる

さらに[0000H]の内容を読むにはもう1命令必要になる…はず

6809なら1命令で読めるがあまり使われなかったと思うどっちにしろ遅くなるので






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<234KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef