22:13:41
icon

IchigoJamでマンデルブロ集合 (2024/03/07) lab.nshdot.com/old/mandel15/
これはIchigoJam実機向けのベンチマークになるので、IchigoJam-BASICで使うにはちょっとツライ(PCGの対応が無いので)。

MSX-DOS上でのGAME言語のベンチマーク [MSX] (2019/12/31)
piclabo.blog.ss-blog.jp/BenchM
これを拝借しようか…

とはいえ、Pentium G4600上のCP/Mエミュレータ上で動くIchigoJam-BASICだと完走する(Complete!の表示が出る)のに10分はかかっているから実機とかだとどうなるんだろう。

IchigoJamでマンデルブロ集合 :: nshdot:lab
Web site image
MSX-DOS上でのGAME言語のベンチマーク: PICマイコンは面白い
18:27:28
icon

教訓:コンパイラを疑う前に自分のコードを疑え

…何度やったっけ、これ…

17:38:31
icon

if (((pint)pc & 1) == 0) { // align 2byte
pc++;
}
if (pc >= list && pc + 4 < list + _g.listsize) {
pc += 4;
continue;
}

貴様か

17:38:13
icon

なんか分かった気がする。最適化の問題じゃなくて、確保されるメモリのアドレスが奇数番地になってるのでtokenizerがうまく動いてない、ということみたい。

15:47:40
icon

現在のcommitによる最適化ルール適用後(-O2もしくは-O1)と、非適用(-O0)のアセンブラコードの比較は多分必要だと思う。というかそれをやるしかないよなあ…

※面倒

15:45:56
icon

1) 現在のcommitで、最適化ルールを削っていく→どこかで動くところが見つかる
2) 最適化ルールを、現在→過去のcommitにさかのぼっていく→どこかで動くところが見つかる

1)と2)を引き起こす箇所は、一致していない

15:24:37
icon

試したことを淡々とissueの形で連ねておけばなんか分かってもらえるかな?

15:24:10
icon

で、このバグ報告どう書けば良いんだろう。すごく難しい英語になりそうな気がするんだけど。

15:23:31
icon

あー、NEGってed 44だから2byteコードか。8ステート。
AND rとかOR rの類は4ステートなので、なるたけこれを狙いたい。

and a→and (hl)もダメ、or (hl)もダメ。

nopを挟む, neg, inc a + dec aは8ステートなので、add/sub a,0ないしcp 0の7ステートで逃げるしかないか。

15:06:32
icon

and aの代わりにneg突っ込めば大丈夫。

でも何でor aじゃダメなんだろうね?

15:03:28
icon

うーん、
ld a,(hl)
and a
jp %1z,%2 ;%3
ld hl,%4
and aの部分をor aにしてもおかしい。
cp 0、inc a + dec a、and a + nop、nop + and a、add a, 0の組み合わせなら問題ない。

あれか、最適化した後のコードをさらに最適化とかしていて、その際になんかおかしなことを始めちゃうんだろうかね?

14:25:07
icon

github.com/z88dk/z88dk/commit/
この修正の、前半に追加されてるline 4560~4587の部分が悪さしてる。line 5270~の修正は無関係。

さらに細かく見ると、%check 0 <= %1 <= 255以降を削ってもIchigJam BASICの動作がおかしいのに対し、それ以前(call l_gchar~ld hl,%4)を削れば改善する。

call l_gchar
ld a,h
or l
jp %1z,%2 ;%3
ld hl,%4
=
ld a,(hl)
and a
jp %1z,%2 ;%3
ld hl,%4

このセクション。何やってんだろこれ。

14:12:20
icon

commit e0388f03ffb4533e5c0d31ce77f6843412e0a97e
Date: Sat Apr 3 18:17:58 2021 +0100
NG

こいつか

github.com/z88dk/z88dk/commit/

14:06:33
icon

commit 1aa6f82a6da9c93f3f8c0a96f07d6e217e4ab88a
Date: Tue Aug 4 21:34:20 2020 +0100
OK

commit 239d3c3ae7d385d197332b2b0a354ce967338d88
Date: Sun Jun 20 22:23:18 2021 +0100
NG

commit 52ca45e772de53a7a34662e3742518c0f2dee8cd
Date: Sat Mar 20 19:56:31 2021 +0000
OK

commit e745499d2bedf1ff37733070cf7f5bed18c7b483
Date: Sat Apr 3 12:25:19 2021 +0100
OK

commit eae581dfa63cf94114c0495409d2912b88de542a
Date: Sat Apr 3 13:35:34 2021 +0100
OK

13:48:34
icon

やっぱこの部分だけ抜く、では状況変わんない…

13:40:34
icon

ピープホール最適化、ある命令シーケンスをこういう形に置き換えてねって最適化なのはわかるんだけど…

シーケンス(大)→置き換え(A)
シーケンス(小)→置き換え(B)

の時に、シーケンス(大)の中にシーケンス(小)が含まれるとどうなるんだろうというのは気になるところ。

13:24:48
icon

2064行目の
jr nz,ASMPC+3
scf
call c,%2
=
call z,%2
なんてさっきのをjp→callに置き換えてるけど、これだって問題になりませんかね。

13:21:25
icon

3394行目以降を削除→エラー出る
3307行目以降を削除→エラー出る
3201行目以降を削除→エラー出ない
3250行目以降を削除→エラー出ない
3275行目以降を削除→エラー出ない
3294行目以降を削除→エラー出る
3281行目以降を削除→エラー出る

3275行目~の最適化ルールって
jr nz,ASMPC+3
scf
jp c,%1 ;%5
=
jp z,%1 ;%5
これなんだけど…ここだけさっくり外して大丈夫なんか?

13:11:53
icon

3500行目以降を削除→エラー出る
1750行目以降を削除→エラー出ない
2612行目以降を削除→エラー出ない
3080行目以降を削除→エラー出ない

12:56:35
icon

{ "COPTRULES1", 0, SetStringConfig, &c_coptrules1, NULL, "", "\"DESTDIR/lib/z80rules.1\"" },

もしかしてCOPTRULES1=ファイル名、とかすると最適化ルールをいじれるのかな

12:54:11
icon

デフォルトだとはz80rules.9→2→1→0(→8)の順で最適化入れるのか。

12:44:57
icon

case 2:
rules[num_rules++] = c_coptrules2;
rules[num_rules++] = c_coptrules1;
break;
default:
rules[num_rules++] = c_coptrules2;
rules[num_rules++] = c_coptrules1;
rules[num_rules++] = c_coptrules3;
break;
}

12:44:51
icon

/* z80rules.9 implements intrinsics and RST substitution */
rules[num_rules++] = c_coptrules9;

switch (peepholeopt) {
case 0:
break;
case 1:
rules[num_rules++] = c_coptrules1;
break;

12:35:27
icon

z88dk(sccz80)、-O2はz80rules.9→2→1の順
-O1はz80rules.9→1の順
-O0はz80rules.9のみ
というルールファイルを使ってz88dk-coptを実行してる

10:03:54
icon

やっぱ汎用的にμsecくらいの待ちを行うコードを書くのってすごく難しい。特定の機種の特定の設定、って範囲を限定してくれないと自分のスキルじゃ無理だわ。

10:02:11
icon

この質問者って、模試作ったメーカーに「あんたの解説は正しくない!誤りを見つけてやったんだから謝礼寄越せ!」って言いたくて言いたくて仕方がないっていうのが行間からものすごく滲み出てる。

10:00:42
2024-04-14 09:42:35 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

これ息子の受けた模試の解答解説なんですけど、下線部の送り仮名間違えてませんか... - Yahoo!知恵袋
detail.chiebukuro.yahoo.co.jp/

Web site image
これ息子の受けた模試の解答解説なんですけど、下線部の送り仮名間違えてませんか?費やすが正しいですよね?模試会社に指摘すれば何か報酬もらえ... - Yahoo!知恵袋
09:57:43
icon

潰えた野望(ついえた-やぼう)

09:56:57
icon

「将来の機能拡張のために予約」…この言葉を見るたびに気分が落ち込むな。

拡張された将来、が来なかったのだから。

09:55:04
icon

(なんかおじーちゃんがボケ防止のために昔の資料引っ張り出してあーでもないこーでもないしてる、というのをやっているよな自分…)

09:53:52
icon

MSX-BASICのワークエリアにJIFFY(0FC9EH, 2byte)があってこれがVDP割り込みによるカウンタなんだけど… ngs.no.coocan.jp/doc/wiki.cgi/

1/60secとは限らないんだよなコレ。PAL機なら1/50secというケースもあるし…確かMSX向けのMegaDemoでも50Hz/60Hz切り替えがあるものがあったと記憶してる。

MAIN ROMの0x2bを読めば自動判別できるはずなんだけど…MSX-DOS上からだとめんどいよね。
ngs.no.coocan.jp/doc/wiki.cgi/

07:20:33
icon

買い替えたくても金が無い(そして中古も意外に安い…安物買いの銭失いであると分かっていたとしても)。

07:18:08
2024-04-14 00:59:32 餓鬼の投稿 hadsn@mstdn.nere9.help
icon

変なこだわりを持っていると、電力効率がいいPCを素直に導入できない問題がある

"2019年発売の最強i7-9850Hと
2022年発売の普通i7-1265Uの性能がだいたい同じなの、電力isパワーって感じ。

クソデカワークステーションも3年経てば800gの軽量ノートに追いつかれる。。"
twitter.com/s_torian_/status/1?

06:48:12
icon

テレビ・ラジオ・新聞を牽制する役割をインターネットに求めているのだけど…ある程度はできているのか、あるいはこいつら(テレビ・ラジオ・新聞)がインターネットを取り込もうと今でも躍起になっているというか…

そろそろテレビ局の一つや二つ、断末魔を聞きたいな、って思ってはいるんだけど。まだかなあ。

06:46:30
2024-04-14 02:00:15 GENKIの投稿 nibushibu@vivaldi.net
icon

このアカウントは、notestockで公開設定になっていません。

06:35:39
icon

Philips mShield for hospital networks Securing medical devices
philips.com/c-dam/b2bhc/de/res
非常に字が小さくて読みづらいけど
「mShield consists of both hardware and software, and is
based on the security-oriented operating system
OpenBSD.」など、OpenBSDが使われていることが書かれている。

06:28:38
Attach YouTube
06:27:19
2024-04-14 06:19:46 Masanori Ogino 𓀁の投稿 omasanori@mstdn.maud.io
icon

OpenBSDが医療機器に使われた話もいつだったかのイベントで発表されてた記憶がある

06:26:58
icon

単に画像を見る、というよりは画像を解析するのでCPUパワー欲しいって話になるのかな。適当に検索してたらこんなのが見つかったんだけど(ちょいとグロい画像もあるので閲覧注意)。
medicalexpo.com/medical-manufa

Web site image
Linux software - All medical device manufacturers
06:21:27
icon

ALAFIA AIVAS SuperWorkstation Product Overview amperecomputing.com/assets/ALA

大量のCPUコアとGPUをLinuxで回す、までは分かったけど…どんなアプリを動かすんだろう(医者じゃないので名前聞いても分からないけど気にはなる)。

06:03:18
icon

uaa@framboise:~/z/ichigojam-firm/console$ TOOLCHAIN=z88dk-sdcc gmake
zcc +cpm -lm -clib=sdcc_iy -I../IchigoJam_BASIC -I./src/ ../IchigoJam_BASIC/main.c -o IchigoJam_BASIC
../IchigoJam_BASIC/ram.h:106: warning 278: return type of function omitted, assuming int
../IchigoJam_BASIC/ram.h:106: error 1: Syntax error, declaration ignored at 'uint8'
../IchigoJam_BASIC/ram.h:106: syntax error: token -> 'ram' ; column 9

05:51:08
icon

標準品(?)のllvmじゃなく、sdccと組み合わせるためのllvmを用意しないといかんか…

05:50:22
icon

uaa@framboise:~/z/ichigojam-firm/console$ clang -S -o tmp2.ll -emit-llvm -O2 -I../IchigoJam_BASIC -I./src ../IchigoJam_BASIC/main.c -nostdinc -I/usr/local/share/z88dk/include
In file included from ../IchigoJam_BASIC/main.c:16:
In file included from ./src/config.h:9:
In file included from /usr/local/share/z88dk/include/unistd.h:9:
/usr/local/share/z88dk/include/sys/types.h:34:9: error: 'short _Float16' is invalid
typedef short _Float16; /* IEEE-754 half float type */

まあそうなりますよねー…

05:48:40
icon

LLVMに処理したコードをsdccに食わせる、という話は確かに昔聞いてはいた。 colecovision.eu/llvm+sdcc/

で、確かにこの方法でC to Cな変換をLLVMでやらせることができそう(今はllvm-gccでなくclangになるけども)…と思ったんだけど、ヘッダの処理をどうするかって問題があるのか。
2010-3-20[土] LLVMで Cに変換してみる 6809.net/tenk/?%E9%9B%91%E8%A8

いきちがいのぷろぐらむあ - 雑記/2010-03-20 - 2010-3-20[土] LLVMで Cに変換してみる