制作日記

こういうの作った方が、逃げにくいじゃない

sleipnir5

本スレもほとんど流し見してたから、全然気づかんかった

究極的な最先端ウェブブラウザ()

デザインダサい、何がっていうか全部ダサい
ダサいmacのツールバーをさらにダサくした感じ
macはまともに使ったことないけど、あんな感じだったよな?

枠線なしで影付けてるんだけどさ、windows8のフラットなデザインの中で異彩を放ってる
その癖、カスタマイズ(オプション)のウィンドウはwindows8標準
作り込まれていないというより、バカなだけじゃないの?

文言がクソ、中国人に書かせたの?www
SDEとHRLがない、これは後々追加されるかもしれんけど
フォントが汚い、読みにくい
フォントが綺麗っていうけど、大抵は線太いかボケボケなだけで読みにくいんだよ

さっと触った感じだと、4の皮を突貫で変えただけって印象
見てないけど、xmlとiniファイルまみれなのも変わってないと思うから、
4と似たようなことしたら、検索とか色々弄れるんじゃないの?

色々書いたけど、エンジンでtrident使えない時点であり得ない
メインのブラウザがIEだから、特殊な用途を除いてエンジンは統一してる
エンジンが違うと描画が変わって気持ち悪い

クロージャ

GCC拡張のnested function ってクロージャなのな、知らんかった。
だってLinuxカーネルのソースで使ってるの見たことないし……
あそこで使ってないものは、わざわざ調べないからなー

と思ってドキュメント読んだけど、違うじゃねーか!
http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html

それでも便利だし、必要なら自前で実装すれば良いだけか

MUGENでシフト演算

演算子で忘れてるのないか調べてたときに見かけたから書いてみる
シフト演算については知ってること

算術シフトだけ考える
論理シフトは算術シフト+αでできるから、割愛

左シフトは2の累乗で掛けるだけ、終わり

次、右シフト
右シフトの再現として真っ先に思いつくのは2の累乗で割ること
でも、2の累乗での除算と右シフトは等価ではない
違いは何かというと、丸め方向

MUGENの整数除算では、演算結果に対して0方向への切り捨てが行われる
除算結果が1.5とか小数点以下を含む場合、答えを1にするか2にするかって話
で、小数点以下を切り捨てて0に近い方を答えとすることを0方向への切り捨てって言う

対して、右シフトを除算ととらえた場合、
下方向への丸めが行われている
これは、1.5なら1と2で値の小さい方を答えにすること

シフト対象が正数なら問題ないけど、負数になった時に問題が出てくる
-3/2は-1だけど、-3>>1は-2
-1/2は0だけど、-1>>1は-1のまま
-1をどれだけ右シフトしたって-1のまま、2での除算とシフトは全然違う

負数の除算で何が問題かって言うと、小数以下からの繰り上げ
これさえなければ右シフトと等価になるんだから、
除算結果が整数になるように事前に調整すれば良い
つまり、xビットシフトしたいときは、下位xビットを全部0にしてから除算する

よって、yをxビットシフトしたいときは
(y & (-ceil(2.0 ** x))) / ceil(2.0 ** x)
これで行ける
yは正数でも負数でも問題ない

iコマンド仕様を若干変更

memRead.ico

iコマンドで16進を入力するとき、
0x80000000は-2^31ではなくて、2^31と判断するるから、
符号付き4byte整数の範囲外となって変換に失敗してた

実用性を考えると、0x80000000は-2^31と解釈したほうが良いから、
そうするようにiコマンドの仕様を変更

あと、範囲外の時はエラー出力するように

演算子IDメモ

演算子とかのID調べたからメモっとく
triggerというか式の記録方法も把握できた

基本的には後置表記で4byteの配列で保存
配列自体にはポインタと直値だけで負荷情報皆無だから、どっちなのか区別がつかないわけだけど、
あっちのあからさまに怪しい数字と見比べてみたら、思った通りそっちで判別してる臭い

で、ID調べてわかったこと
:=はそれ単体で演算子なんじゃなくて、前に書くvarも含めて1つの演算子
var:=とfvar:=でIDが違うことからもわかるけど、
後置表記式の配列を見てみると、:=はvarの番号と代入する値2つを引数に取ってる
つまり、:=はvarに代入する演算子ではなくて、
varに値を代入し、varに代入した値を評価結果として返す演算子と言えるわけだ

:=でvarに値を代入したのち、varトリガーを呼び出してるわけではないと思われる

ちなみに無理やりvar(60):=1とかにしても、範囲外で怒られて代入できなかった

iコマンドにバグがあったんでiコマンドの仕様を変更したいから更新するけど、
式を出力するコマンドの実装は来週以降かな?


= ,00000001h
!= ,00000002h
> ,00000003h
< ,00000004h
>= ,00000005h
<= ,00000006h
() ,00000007h
(] ,00000008h
[) ,00000009h
[] ,0000000Ah
&& ,0000000Bh
|| ,0000000Ch
! ,0000000Dh
^^ ,0000000Eh
** ,0000000Fh
& ,00000010h
| ,00000011h
^ ,00000012h
-(単項) ,00000013h
var:= ,00000014h
fvar:= ,00000015h
+ ,00000017h
- ,00000018h
* ,00000019h
/ ,0000001Ah
% ,0000001Bh
プロフィール

Author:drab
霊夢改変キャラ
「12 3 ! {V} [_]」
公開中
L霊夢でもl_reimuでも好きなように読んでください

最新記事
最新コメント
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク