Hacker News 의견
  • 몇 년 동안 개발해온 프로젝트를 공유하고 싶음
    https://asm-editor.specy.app
    M68K, MIPS, RISC-V, X86 등 다양한 어셈블리 언어를 지원하는 온라인 인터랙티브 IDE임
    어셈블리 프로그래밍을 가르치기 위한 다양한 기능이 많음
    다른 웹사이트에도 임베드할 수 있음

  • 포인터 인덱싱 레지스터에 저주소 바이트 직접 접근 기능(예: 16/32비트에서 si/esi가 sil로 접근 가능)이 있다는 걸 몰랐음
    ax/eax에서 al로 접근하는 것과 비슷한 개념임
    x86_64에서 새로 추가된 오퍼코드가 실제로 존재하는지 궁금함
    플랫폼 명세를 다시 확인해봐야겠다는 생각이 들음
    순수한 호기심에서 묻는 것임

  • 직접 작성을 한 어셈블리 입문 자료를 공유함
    https://www.nayuki.io/page/a-fundamental-introduction-to-x86-assembly-programming

  • 내 CPU 에뮬레이터 디스패치를 C++보다 빠르게 만들 수 있는지 궁금해서 어셈블리로 최적화 시도해봄
    피보나치 프로그램을 실행해봤는데 결과는 전혀 근접하지 못했음
    결국 기본값 비활성화 옵션으로 병합만 했음
    그래도 분명 더 빠르게 할 수 있는 방법이 있다고 믿음
    https://github.com/libriscv/libriscv/blob/master/lib/libriscv/amd64/inaccurate_dispatch.nasm
    메모리 접근 방법을 익히면서 성능을 약간은 개선함
    점프 테이블을 64비트에서 32비트로 줄이고, .text 섹션에 들어가도록 해서 RIP-relative 접근으로 만듦
    피보나치 프로그램에는 많은 바이트코드가 필요 없었음
    더 개선할 점에 대한 팁을 정말 듣고 싶음

    • 본인이 작성한 코드와 C++ 컴파일러가 생성하는 코드를 직접 비교해봤는지 궁금함
      맥락은 잘 모르지만 차이가 디스패치 메커니즘(명령어 페치 방식) 때문이 아니라, 실제 명령 구현 차이 때문일 가능성도 있다고 생각함
      최적화 방안으로, 에뮬레이션하는 레지스터를 x86-64 실제 레지스터에 매핑하고, 메모리로 아예 안 흘리는 방법이 있음
      이렇게 하면 add 같은 연산에서 메모리에서 꺼내지 않고 바로 연산 가능함
      단, 이 방식은 에뮬레이터 작성이 훨씬 번거로움
  • 브라우저에서 실습 가능한 x86 어셈블리 입문 자료임
    별다른 로컬 셋업 없이 예제를 바로 실행해볼 수 있음
    https://shikaan.github.io/assembly/x86/guide/2024/09/08/x86-64-introduction-hello.html
    참고로 본인이 작성한 자료임

    • 입력값 검증을 따로 하는지 궁금함
      NASM으로 바로 어셈블 후 바이너리 실행하는 방식 같아서 보안이 궁금해짐
  • 프로필 사진만 보고 junferno인 줄 알았음

  • 어셈블리를 한 번쯤 만져보는 것만으로도 전반적인 이해가 깊어져서 항상 좋은 경험이 됨
    큰 프로젝트를 만들 필요까지 없으니, 용기를 내서 조금이라도 직접 해보는 것을 추천함

  • (2020년) 당시 HN 토론 링크를 공유함
    https://news.ycombinator.com/item?id=24195627

  • 인텔 방식의 어셈블리 문법(구문)이어서 다행이라고 생각함

    • 다른 어셈블리 문법이 뭐가 있는지 궁금해짐
  • 어셈블리로 뭔가 해보고 싶긴 한데 특별히 아이디어가 떠오르지 않음

    • TIS-100이라는 게임을 추천함
      일종의 유사 어셈블리로 퍼즐을 푸는 게임임
      이런 게임이 어셈블리에 대한 갈증을 해소해줄 수 있다고 생각함