Coder Social home page Coder Social logo

nesasmsharp's Introduction

NesAsmSharp

C言語で書かれたNESアセンブラ"nesasm"をC#に移植したものです。

以下で公開されているバージョン2.51p beta3のソースを移植元としています。

必要な環境

  • ビルド環境: Visual Studio 2015
  • 実行環境: .NET Framework 4.5.2

使い方

NesAsmSharp [-options] [-? (for help)] infile[.asm]

オプション 説明
-s / -S バンク毎の利用状況を出力します
'-s'オプションで基本的な情報、'-S'オプションでより詳細な情報を出力します
-l # リストファイルの出力レベルを指定します

0 : ソースコード中にLISTディレクティブを使用していてもリストファイルを出力しません
1 : (最小) DB、DW、DEFCHRディレクティブで生成されるコードを出力しません
2 : (通常) DEFCHRディレクティブで生成されるコードを出力しません 
3 : (最大) すべてのコードを出力します

'-l'オプション省略時の出力レベルは2になります
-m リストファイルの出力時、MLISTディレクティブを使用していなくても強制的にマクロを展開して出力します
-raw アセンブル結果のROMファイルにNESヘッダを付与しません
-autozp 命令毎にゼロページアクセス可能かどうかを自動判定して、可能である場合はゼロページアクセスのコードを出力します
-e <ENC> ソースファイルおよびリストファイルの文字コードを指定します

SJIS : ソースファイルの文字コードをShift-JISとして読み込みます
UTF8 : ソースファイルの文字コードをUTF-8(BOMなし)として読み込みます

'-e'オプション省略時はシステムのデフォルトエンコーディング設定で読み込みます
-wd アセンブル時の警告メッセージ出力を抑制します
-watch アセンブルに使用したファイルの更新を監視し、更新がある度に自動的に再アセンブルを行うモードに入ります

このモードのヘルプはHキーを押すと表示されます

追加された機能

.CATBANK directive

指定したバンクに対してバンクを跨いだアセンブルを可能にします

  • サンプルコード
  ; example
  .catbank $00
  .bank $00
  .org $9FFC
	.db 1, 2, 3, 4, 5, 6, 7, 8 ; OK

  .bank $01
  .org $BFFC
	.db 8, 7, 6, 5, 4, 3, 2, 1 ; NG

.BEGINREGION/.ENDREGION directive

アセンブル実行時、.BEGINREGION と .ENDREGION で囲まれた範囲のバイト数を標準出力にレポートします

  • サンプルコード
  .bank $04
  .org $9876
  .beginregion "subroutine"
  lda <$00
  clc
  adc <$01
  sta <$02
  rts
  .endregion "subroutine"
  • 出力
==================== Region Info ====================
Region subroutine  :        8 bytes (0x000008 bytes)
=====================================================

REGIONSIZE() function

.BEGINREGION/.ENDREGION で定義した領域のバイト数を取得します

  • サンプルコード
  .bank $04
  .org $9876
  .beginregion "subroutine"
  lda <$00
  clc
  adc <$01
  sta <$02
  rts
  .endregion "subroutine"
  ;
  ; get region size
SUBROUTINE_SIZE = REGIONSIZE("subroutine")
  .db (SUBROUTINE_SIZE & $FF) ; $08
  .db ((SUBROUTINE_SIZE >> 8) & $FF) ; $00

.PUBLIC directive

ローカルラベルに対して使用することで、そのローカルラベルをスコープ外から参照することができるようになります。

宣言

ローカルラベルの宣言でローカルラベル名の後にスペースまたはタブをはさんで.publicと記述します。

.locallabel .public

参照

対象のローカルラベルが所属するグローバルラベル名とローカルラベル名をつなげて記述します。

jsr Global1.Local1

使用例

  • サンプルコード
  .bank	$00
  .org	$8000
GLabel1:
  lda	#$01
.LLabel1 .public  ; public local label declaration
  clc
  adc	<$00
  sta	<$00
  rts
GLabel2:
  jsr	GLabel1
  lda	#$03
  jsr	GLabel1.LLabel1
  rts
  .dw	GLabel1.LLabel1
  .db	LOW(GLabel1.LLabel1)
  .db	HIGH(GLabel1.LLabel1)

強化された機能

.INCBIN directive

読み込むファイルの読み込み開始位置と読み込みサイズを指定できるようになりました

.incbin "filename" [, readOffset [, readSize]]

引数 説明
filename 読み込むファイル名
readOffset ファイルの読み込み開始位置
省略時はファイルの先頭
readSize ファイルの読み込みサイズ
省略時はファイルの末尾まで

nesasmsharp's People

Contributors

rock5easily avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.