HobbyOSs / opennask

nask clone assembly, it can boot tiny OS with Linux
https://github.com/HobbyOSs/opennask/wiki/%E5%8B%95%E4%BD%9C%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF
GNU General Public License v3.0
20 stars 3 forks source link

メモリーアドレッシングの処理に対応(2) #82

Closed hangingman closed 1 year ago

hangingman commented 1 year ago

ref #73

対応内容

BNFの内容

ref https://web.archive.org/web/20230616085837/https://faculty.kfupm.edu.sa/COE/aimane/assembly/pagegen-64.aspx.htm

Direct.                  MemoryAddr ::= "[" Factor "]" ;
BasedOrIndexed.          MemoryAddr ::= "[" Ident "+" Integer "]" ;
Indexed.                 MemoryAddr ::= "[" IndexExp "+" Integer "]" ;
BasedIndexed.            MemoryAddr ::= "[" Ident "+" Ident "]" ;
BasedIndexedDisp.        MemoryAddr ::= "[" Ident "+" Ident "+" Integer "]" ;
BasedIndexedDispScale.   MemoryAddr ::= "[" Ident "+" IndexExp "+" Integer "]" ;
IndexScaleExp.           IndexExp   ::= Ident "*" Integer ;

TODO

16ビットメモリアドレッシングモード

32ビットメモリアドレッシングモード