2009년 9월 8일 화요일

Syntax Highlighter 2.0용 x86 어셈블리 브러쉬 공개

Visual Studio 계열 쉬프트(>>) 연산 버그의 원인이라는 뻘포스팅을 하면서 보니 Syntax Highlighter에 어셈블리 브러쉬가 없더라. 워낙 기본적인 언어라 있을 것 같기도 한데 참...

아뭏든, 하나 있으면 좋을 것 같아 만들어봤다.
일단, 아래 파일을 다운받아 압축을 풀고 올리고 나서


아래의 내용을 HTML 헤더에 추가한 뒤에

<script type="text/javascript" src="scripts/shBrushAsm.js"></script>

아래와 같이 적으면 된다.

<pre class="brush: asm;">어셈블러 코드</pre>

brush 명은 asm 또는 x86을 사용하면 된다.
기타 자세한 설명은 기존 포스팅을 참고. (어짜피 이거 쓰려는 분들은 뭔지 잘 아실 것이니 자세한 설명은 생략)
적용한 화면은 아래와 같다.

사용자 삽입 이미지

그런데, 문제가 있다.
당연한 얘기지만, SH의 브러쉬는 거대한 정규식 덩어리다.
주석 역시 정규식으로 지정되어 있는데, 하필 어셈블러의 주석은 애매하기 짝이 없는 세미콜론(;)이다.

이건 단독으로는 평범한 문자이지만, &nbsp; 와 같이 사용될 때는 의미를 갖기 때문에 정규식으로 구성하기가 너무 어렵다.
현재는 아래와 같이 애매하게 지정해뒀다.

{ regex: /^;.*$/gm,     css: 'comments' },            // one line comments
{ regex: /\s\;.*$/gm,     css: 'comments' },          // one line comments

즉, 행의 맨 처음이거나 바로 앞에 공백이 있는 경우만 주석으로 처리하는 것이다.
이게 문제가 될 수 있는 것이 mov ecx, 32;00000020H 처럼 쓰는 경우엔 주석으로 인식을 못 하는 거다.

정규식으로 &문자열; 의 포맷이 아닌 경우를 찾는 방법을 못 찾아 미봉책만 쓴 것이다.

혹시 이런 경우에 사용할 수 있는 정규식을 아시는 고수분 계시면 한 수 가르침 부탁드린다.




댓글 5개:

  1. 엉엉 뺏겼다 ㅜㅠ

    트랙백 감사합니다. 저는 만들던 거 계속 만들어도 되겠죠? ㅋㅋㅋ

    답글삭제
  2. @Un-i-que - 2009/09/09 22:13
    그래도 제가 만든 게 예약어가 훨 많다능! ㅎㅎ

    답글삭제
  3. @BLUEnLIVE - 2009/09/09 22:44
    GAS랑 NASM, MASM을 짬뽕해 놓으시지 않았습니까-_-;; 그리고 제 거는 일단 8086 표준 명령어을 기준으로 하고 있죠.

    흠... 그런데 예약어도 asm이고 파일명도 shBrushAsm.zip이군요.

    블루앤라이브 님께서 싫지 않으시다면 ARM 명령어를 추가해 보는 건 어떨까요. (응?)



    그리고 제 거 계속 만들어도 되냐는 질문에는 아직 대답 안 해 주셨습니다 ㅋㅋㅋ

    답글삭제
  4. trackback from: 블로그에 8086 어셈블러 (NASM) 게시하기
    shBrushNasm8086.js 앞쪽에서 말한 바가 있지만, 이건 그냥 이렇게 따로 써 놓는 게 나을 것 같아서 말입니다. 1. SyntaxHighlighter를 설치합니다. 설치되어 있으면... 뭐. 그렇죠. 설치하시려면, 뭐 들보 님의 지나간 덧글에도 있지만, 블루앤라이브 님의 포스트 http://zoc.kr/547 가 큰 참고가 될 겁니다. 2. 티스토리라면, 압축을 푼 파일을 업로드하고 HTML/CSS 편집에 이런 코드를 추가하셨겠죠? <h..

    답글삭제
  5. @Un-i-que - 2009/09/09 22:13
    ㅎㅎ

    사실, 저 예약어들은 어디에선가 사용하는 걸 스브적 업어왔... (응?)



    그리고... 만드시는 걸 저한테 허락을 받으실 수야... ㅎㅎㅎ

    답글삭제