ときどきの雑記帖 RE* (新南口)
許容もなく慈悲もなく
ワンマン運転
正確な時期はわからないけれども(たぶん今年3月のダイヤ改正の辺り?) 東横線でも車掌なしのワンマン運転が始まって、 車内に流れるアナウンスでもそれに言及するものが増えた。 で、日本語でのアナウンスの後に英語で(ほぼ)同じ内容の アナウンスが流されていて
東急東横線 ワンマン運転車内放送(音声のみ) - YouTube
「ワンマン(運転)」てのはいわゆる和製英語なんだろうとは思ってたけど、なるほどそう表現するのか。
malloc
新刊近刊
【7月近刊情報📕】
— 講談社サイエンティフィク🖋️📔 (@kspub_kodansha) June 15, 2023
ゴンザロ・ナバロ(著)定兼邦彦(訳)
『コンパクトデータ構造 実践的アプローチ』https://t.co/gkUkmgNFxq
理論から応用例まで、幅広いトピックを丁寧に解説。150を越えるアルゴリズムの擬似コードを掲載した唯一無二の成書📢 pic.twitter.com/I0u5PLFSvh
へー、と思いつつ値段を見てひっくり返った😓
コンパクトデータ構造 実践的アプローチ (KS情報科学専門書) : ゴンザロ・ナバロ, 定兼 邦彦: 本
ところでその「コンパクトデータ構造」 なるのは簡潔データ構造 - Wikipedia とは違うものなんだろうか? という疑問を持ったので検索してみところ
コンパクトデータ構造をやる人になった - EchizenBlog-Drei
Navarro本こと「Compact Data Structures」を読み始めました。極めて有益な書でした。
この本はこれまでSuccinct Data Structureとよばれているものに関する教科書なのですが、 Succinctが理論的には下限に漸近しているけど実用上・・・というのが多かったのに対して、 Practicalであることを重視した内容になっています。そのためSuccinctではなくCompactとしているようです。 この分野についてここまで詳しく、またわかりやすくまとまった書は他に類を見ないのではないでしょうか。
ということらしい(Succinct Data Structure = 簡潔データ構造)。
o’reilly
ちょっと古いものも含めて気になっているオライリー本。 買っても(買えても)2冊くらいかねえ。
イーロン・マスク
アイザックソンの本だし、読んでみたくはあるけどどうすっかなあ。
K&R style
ふと気になったのだけど関数の引数の書き方で 今は
int
main(int argc, char **argv)
{
...
}
のように書くわけだけど、K&Rのその昔は
int
main(argc, argv)
int argc; char **argv;
{
...
}
こう書いていた。 なんでこういう書き方にしたんだろうと ふと気になったわけで
MID$ statement
MSのBASICでの比較演算子の解析の話の続き。
basic9
例の出自の怪しい6809用のもので比較演算子の解析をどうやっているのかを 見てみると
* CHECK FOR RELATIONAL OPERATORS
LB16A SUBA #TOK_GREATER TOKEN FOR >
BCS LB181 BRANCH IF LESS THAN RELATIONAL OPERATORS
CMPA #3 *
BCC LB181 * BRANCH IF GREATER THAN RELATIONAL OPERATORS
CMPA #1 SET CARRY IF ??
ROLA CARRY TO BIT 0
EORA TRELFL * CARRY SET IF
CMPA TRELFL * TRELFL = ACCA
BCS LB1DF BRANCH IF SYNTAX ERROR : == << OR >>
STA TRELFL BIT 0: >, BIT 1 =, BIT 2: <
JSR GETNCH GET AN INPUT CHARACTER
BRA LB16A CHECK FOR ANOTHER RELATIONAL OPERATOR
*
LB181 LDB TRELFL GET RELATIONAL OPERATOR FLAG
BNE LB1B8 BRANCH IF RELATIONAL COMPARISON
LBCC LB1F4 BRANCH IF > RELATIONAL OPERATOR
ADDA #7 SEVEN ARITHMETIC/LOGICAL OPERATORS
BCC LB1F4 BRANCH IF NOT ARITHMETIC/LOGICAL OPERATOR
ADCA VALTYP ADD CARRY, NUMERIC FLAG AND MODIFIED TOKEN NUMBER
LBEQ LB60F BRANCH IF VALTYP = FF, AND ACCA = ??TOKEN -
* CONCATENATE TWO STRINGS
ADCA #-1 RESTORE ARITHMETIC/LOGICAL OPERATOR NUMBER
PSHS A * STORE OPERATOR NUMBER ON STACK; MULTIPLY IT BY 2
ASLA * THEN ADD THE STORED STACK DATA = MULTIPLY
ADDA ,S+ * X 3; 3 BYTE/TABLE ENTRY
LDX #LAA51 JUMP TABLE FOR ARITHMETIC & LOGICAL OPERATORS
LEAX A,X POINT X TO PROPER TABLE
LB19F PULS A GET PRECEDENCE FLAG FROM STACK
CMPA ,X COMPARE TO CURRENT OPERATOR
BCC LB1FA BRANCH IF STACK OPERATOR > CURRENT OPERATOR
BSR LB143 'TM' ERROR IF VARIABLE TYPE = STRING
CPUが違うので比較が難しい部分もあるけど、GW-BASICと同じようなロジックでやってますな。 それでいて、MID$ statementの部分は11234になるようには見えなかったんだよなあ (さらにcopyrightの年が1982)。 F-BASICやS1-BASICとの関係も皆目わからんし。
6809/combined.asm at master ・ jefftranter/6809
* COPYRIGHT MESSAGES
LA147 FCC "6809 EXTENDED BASIC"
FCB CR
FCC "(C) 1982 BY MICROSOFT"
LA156 FCB CR,CR
LA165 FCB $00
N-BASIC
古川さんの本からN-BASIC開発に関連する部分
寄稿:NEC-BASIC vs Microsoft BASICの舞台裏(吉崎武)
1979年の年末頃、TK-80を生み出したNECのマイコン部隊の本拠地がある川崎の 電子デバイス事業部の向上に出向いたときのことである。
米国製の人気マイコンTRS-80と似た外観のキーボード一体型のスマートな マイコンが置いてあった。ネームプレートには「PCX-01」と記されていた。 後に、大ヒットマイコンとなる「PC-8001」の試作機であった。
PCX-01は、その当時のマイコンとしては桁違いのハイスペックであり、 NECがこれに賭ける意気込みがうかがえた。NECとしては、このPCX-01用の BASICを社内で開発中であるが、Microsoft BASICの搭載も並行して 検討したいということであった。そして、NECが社内で開発しているBASIC (開発名: N-BASIC)と、Microsoft BASIC(開発名: M-BASIC)の開発競争が始まった。
アスキーはマイクロソフト社の日本代理店としてMicrosoft BASICの 動作確認とバグ出し協力を行ったが、NEC製のN-BASICの動作確認とバグ出しも同時に行った。
(略)
最終的に、N-BASICはマイコン雑誌や書籍に掲載されているBASICプログラムが 動かない場合があることが問題になり、互換性に優れたM-BASICがPCX-01用BASICとして採用された。
FORTRAN Compiler on IBM 704
level analysisの話のつづき。 コメントがしっかりと書かれているのだけど それでもそれがどういう意味なのかが よく理解できていない状態だったのだけど
LA0021 CLA FIRSTC 4F13866
CAS OPEN 4F13867
TXI LA3000,B,-1 4F13868
TXI L32000,B,-2 -N TO -N(+2) 4F13869
TXI LA3000,B,-1 4F13870
*
L13130 SLW ALPHA+3,C STO -(N+2) IN ALPHA+A+3 4F13871
CLS L(0) 4F13872
STO LAMBDA+9,A STO -0 IN LAMBDA +3(L+3) 4F13873
SLN 1 4F13874
-N TO -N(+2)
はN(という変数)に2を加えるということで
(IBM 704なのでインデックスレジスターに与える値はアレということでマイナスがつく)、
STO -(N+2) IN ALPHA+A+3
は
2加えた値(を持ったアキュムレーターの内容)を
ALPHA+A+3
にストアするということ。
ただここでストアする-N(+2)
を求めているのはちょっと離れたところにある。
TXI FINI03,B,1 -(N+3) TO - (N+2) 4F13835
FINI03 PXD CM4300,B 4F13836
ARS 18 4F13837
SSM 4F13838
STO LAMBDA+12,A STO -(N+2) IN LAMBDA+3 (L+4) 4F13839
LA0041 SLT 1 4F13840
TXI L43130,B,1 UNARY... -(N+2) TO -(N+1) 4F13841
TXI L13130,B,1 BINARY... -(N+2) TO -(N+1) 4F13842
そしてNの操作をしているところは
TXI FINI03,B,1
のようにどれもインデックスレジスターB(実体は2番)が関係しているのだけど
LXD 3LBAR,A LOAD LA COUNTERS 4F13774 25
LXD NBAR,B 4F13775 26
LXD ABAR,C 4F13776 27
NBARから持ってきた値。と。
それと
MS030 SLW E+1 X 4F13479
STZ FNBITS CLEAR FUNCTION NAME INDICATOR 4F13480
STZ FNCTR CLEAR FUNCTION ARG COUNTER. 4F13481
STZ G CLEAR RECEIVING CELL. 4F13482
CLS L(0) SET E = -0 4F13483
STO E X 4F13484
STZ命令で「ふつーの0」で初期化しているところとは別に、
CLS L(0)
との組み合わせでマイナスの符号付き(IBM 704の固定小数点数(整数)のゼロには
プラスマイナスの符号がつく)の0で初期化している場所がいくつかある。
たぶんこの符号を使ってなにか判定するのかねえ。
標識
宇宙よりも遠い場所のED曲「ここから、ここから」のタイトルの元となった標識を巡礼 #よりもい #yorimoi pic.twitter.com/OtCVjrf2DB
— うにまる (@unimaru_) April 22, 2018
この場所に行きたいのだけどどこだかわからんのだよねえ (環七のどこか。とは聞いたことがあるけど)。
ここから、ここから
似たような並びになった標識は他でもあるらしい。
ASSUME
…というか、8086を使った経験のある人のほとんどはマイクロソフトのMASMで、インテル純正のASM86を使った人は業界人のヤクザでしょ?MDS-86とかISIS-2とかPL/M-86とか知ってるんでしょ?(・ω・)そこのzzさん?!
— ウチューじん・ささき (@uchujin17) October 4, 2018
MASMの.DATA/.TXTみたいな簡略文法じゃなくて、インテル純正のアセンブラはCODE CS ALIGN 2; ASSUME CS:CODEみたいな謎文法で、その文法の意味を調べようとすると「暗黙的なセグメント・エイリアッシング」とかの謎解説が延々と並んでいたの。
— ウチューじん・ささき (@uchujin17) October 4, 2018
8086のアセンブリ言語いじってた人の大半がMASMを使っていただろうというのには異論はないけど、 MASMもだいぶあとの方になるまでお手軽な書き方はできなかったんじゃないかなあ。 ASSUME命令は自分もだいぶ混乱した覚えがある。
- MS-DOS Ver3.1 実用マクロアセンブラ : 河西朝雄 : Free Download, Borrow, and Streaming : Internet Archive
- MASM疑似命令ハンドブック : マクロアセンブラver.4.0-5.1 (ナツメ社): 1989|書誌詳細|国立国会図書館サーチ
- MASM Version 5、及び6におけるセグメント - Qiita
- Microsoft Macro Assembler - Wikipedia(日本語)
- Microsoft Macro Assembler - Wikipedia(英語)
MASMじゃなくてTASM(Borlandの出していたアセンブラ―)のうぃきぺのエントリに ASSUMEを使ったサンプルコードがあった。
ASSUME CS:CODE , DS:DATA
DATA SEGMENT
NUM1 DB 05H
COUNT DB 04H
RESULT DW 1 DUP (0)
DATA ENDS
CODE SEGMENT
START:MOV AX,DATA
MOV DS,AX
MOV AL,NUM1
MOV CL,COUNT
UP:CALL FACT_BYTE
DEC CL
JZ UP
MOV RESULT,AX
JMP EXIT
FACT_BYTE
MUL AL
RET
FACT_BYTE ENDP
EXIT:MOV AH,4CH
INT 21H
CODE ENDS
END START
つーかTASMでなぜわざわざこの記法を。
これめっちゃ好き。 pic.twitter.com/KwxhZHgDea
— TT (@TT__0811) June 13, 2023
ぼっち演算子
Rubyのぼっち演算子(lonely operator)って、一人で座ってる用に見えるから? pic.twitter.com/d1GqNqO4dp
— natsutan (@natsutan) June 15, 2023
その通りだったと思うけど これはたしかメーリングリストで話題になったよなあと メーリングリストのアーカイブで確かめようとしたら…
正規表現
NTTと早大、誤った正規表現の文字列抽出を自動で修正する技術を発表 https://t.co/cW51DYyD0A
— ZDNET Japan (@zdnet_japan) June 16, 2023
NTTと早大、誤った正規表現の文字列抽出を自動で修正する技術を発表 - ZDNET Japan
Repairing Regular Expressions for Extraction | Proceedings of the ACM on Programming Languages
どこかで聞いたような話と組織の組み合わせだなあ と記憶をたどった。
- 正規表現の脆弱性を自動修正するアルゴリズムを開発 NTTと早稲田大学:理論的に「ReDoS脆弱性がないこと」を保証 - @IT
- 【セキュリティ ニュース】正規表現の処理に起因するサービス拒否脆弱性の自動修正技術(1ページ目 / 全1ページ):Security NEXT
- ReDoS脆弱性の自動修正技術を実現 – 早稲田大学
- Repairing DoS Vulnerability of Real-World Regexes - YouTube
- Repairing DoS Vulnerability of Real-World Regexes
これか。