0510デフォルトの名無しさん
2019/11/22(金) 16:56:01.19ID:2jFqraTL他にも、
1. 両者とも、アラインの揃ってないアドレスからでも16BIT以上のデータを
読み出せると言う特徴がある。これが出来ないCPUも多く、Apple系は昔そういう
CPUを使っていたと聞いている。今でもC言語の構造体などで align が細々と
決まっているのは、後者の文化圏の人達が主導しているのかも知れない。
2. carry flag(8086 では「borrow flag」という名前になっている)を使うと、
多倍長の加減算が容易に出来るのも両社に共通している。この特徴は、
他のCPUには無いことが多いらしい。だから、LLVMなどには adc や sbc(sbb)
相当の命令が無いし、carry flag を捕捉する命令も定義されていない。
3. LLVM では、単純な引き算の延長線上にある cmp 命令でフラグを作った後、
条件の種類によっていろいろな種類のJcc で条件分岐するという流儀をとっておらず、
条件の種類によって比較命令自体を変えてしまって、結果は常に 1BIT の
BOOL値とし。逆に Jcc 命令は原則一種類となっている。これは、LLVMが
Z80や8086とは異なる文化圏の人が作ったものであるのではないかと推定される。
4.アカデミカルな世界では、CPUとして、業界事実標準の Z80 や 8086 系統ではなく、
どうも違う文化のものを想定していることが多い気がする。
色々な言葉が、Z80 や 8086 ではかなり多く共通しているが、LLVMとは全く
違う。