2

私は C、flex、bison で書かれた楽しみのためにアセンブラに取り組んでいます。マクロ、インクルード、繰り返しブロックを追加したいのですが、別の前処理段階のパーサーでこれを行うことを考えていました。

私の質問は、元のソース行番号 (およびファイル名) を追跡するにはどうすればよいですか? これは、有用なエラー メッセージの生成、きれいな印刷、およびデバッグ情報の生成に使用されます。

前処理が完了した後の 2 番目のパーサーの yylineno は、おそらくマクロ展開などの後にオフセットされます。

4

1 に答える 1

5

あなたは付け加えられます

;#file filename.asm
;#line 5

前処理されたアセンブラにそう

foo:
PUSHREG(A,B,C)
;--10 lines of code
POPREG(A,B,C)
set PC,POP

になる

foo:
;#file functionmacros.asm
;#line 10
set push,A
set push,B
set push,C
;#file yourfile.asm
;#line 5
;--10 lines of code
;#file functionmacros.asm
;#line 30
set C,pop
set B,POP
set C,POP
;#file yourfile.asm
;#line 16
set PC,POP
于 2012-05-04T10:21:01.870 に答える