소개
VisUAL은 Imperial College London의 전기 및 전자 공학과에서 ARM 어셈블리 언어 교육을 위해 개발된 크로스플랫폼 ARM 에뮬레이터입니다. 사용자가 ARM 어셈블리 코드를 작성하고 실행할 때 레지스터 값, 메모리 접근, 스택 동작, 분기 및 서브루틴 등을 시각화하여 이해를 돕습니다. 오류 수정 제안과 무한 루프 탐지 기능도 제공하여 학습과 디버깅을 지원합니다. 헤드리스 에뮬레이션 모드를 통해 명령줄에서 실행 및 XML 로그 출력이 가능하여 대량 코드 테스트에도 활용할 수 있습니다.
상세정보
프로그램 내비게이션 및 기록
단계별 실행 외에도 과거 레지스터 값을 탐색하여 프로그램 기록을 확인할 수 있어 복잡한 코드의 흐름을 이해하고 디버깅에 도움이 됩니다.
포인터 시각화
ARM 어셈블리의 9가지 포인터 동작 변형을 정보 창에 표시하여 로드/스토어 명령어에서의 주소 계산을 시각적으로 설명합니다.
시프트 연산 시각화
시프트 명령어를 애니메이션으로 재생하여 실제 데이터 값을 기반으로 비트 이동 과정을 보여줍니다.
메모리 접근 시각화
워드-얼라인드 및 바이트-얼라인드 메모리 접근 시 기본 주소와 오프셋을 표시하고 변경된 값을 하이라이트하여 시각화합니다.
스택 시각화
다중 로드/스토어 명령어를 스택 형태로 시각화하고, 스택 포인터의 시작 및 종료 값을 표시하여 스택 동작을 설명합니다.
분기 시각화
색상 코드가 적용된 라인 하이라이트로 분기 발생을 표시하고, 조건 플래그를 강조하며 목적지 코드 라인을 가리키는 화살표를 제공합니다.
서브루틴 시각화
링크 레지스터 설정 시 서브루틴 반환점을 하이라이트하고 서브루틴 종료까지 유지하여 함수 호출 흐름을 명확히 합니다.
오류 수정 제안
컴파일 오류 대신 맥락에 맞는 설명과 함께 기대되는 내용을 제시하며, 런타임 오류 시 문제된 명령어와 오류 원인을 구체적으로 안내합니다.
무한 루프 탐지
무한 루프로 이어질 수 있는 코드를 감지하고 사용자에게 적절한 응답을 선택하도록 프롬프트를 표시합니다.
메모리 내용 보기
메모리 내용 창을 통해 실시간으로 데이터 변경을 모니터링하여 정적 및 동적 관점에서 메모리 접근 명령을 디버깅할 수 있습니다.
심볼 보기
정의된 모든 코드 및 데이터 심볼 목록을 제공하여 실행 중 심볼 조회를 용이하게 합니다.
헤드리스 에뮬레이션 모드
명령줄에서 어셈블리 코드를 실행하고 프로그램 상태를 XML 파일로 로깅하여 대량 코드 테스트에 활용할 수 있습니다. 자세한 사용법은 로깅 가이드를 참조하십시오.
기본 사용법
공식 웹사이트에서 프로그램을 다운로드한 후 실행하면 편집기 화면이 나타납니다. 여기서 ARM 어셈블리 코드를 입력하거나 파일을 열어 실행할 수 있습니다. 상단 도구 모음의 ‘Execute’, ‘Step Forwards’, ‘Step Backwards’ 버튼을 사용하여 코드를 단계별로 실행하거나 연속 실행할 수 있으며, 레지스터 및 메모리 창에서 실시간 변화를 관찰할 수 있습니다. 브레이크포인트를 설정하여 특정 위치에서 실행을 중단하고 상태를 확인할 수 있습니다.
화면으로 보는 주요 기능
Visual Arm Emulator 시작 화면

시작 화면에는 왼쪽 편집기에서 ARM 어셈블리 코드를 작성하고, 오른쪽 레지스터 뷰에서 R0~R10의 값을 10진수, 2진수, 16진수로 확인할 수 있습니다. 상단 메뉴와 실행/단계 버튼이 있으며, 10번째 줄에 브레이크포인트가 설정되어 'Breakpoint Reached' 상태가 표시됩니다. 하단에는 'Visual' 로고와 'A highly visual ARM emulator' 문구가 있습니다.
시스템 요구사항
별도의 시스템 요구사항이 등록되지 않았습니다.


