核心概念
신경망 언어 모델과 기호 솔버를 결합한 접근법을 통해 어셈블리 코드를 효율적으로 변환할 수 있다.
摘要
이 논문은 어셈블리 코드 변환을 위한 신경 기호 접근법인 GUESS & SKETCH를 제안한다.
GUESS 단계에서는 신경망 언어 모델을 사용하여 변환 후보를 생성하고, 입력 및 출력 간 정렬 정보와 잠재적 오류를 추출한다. SKETCH 단계에서는 이 정보를 활용하여 기호 솔버를 통해 오류를 수정한다.
실험 결과, GUESS & SKETCH는 기존 접근법보다 57.6% 더 많은 예제를 성공적으로 변환할 수 있었다. 특히 언어 모델만 사용한 접근법보다 13.2% 더 나은 성능을 보였다. 이는 신경망과 기호 방식의 장점을 결합하여 어셈블리 코드 변환 문제를 효과적으로 해결할 수 있음을 보여준다.
统计
실험 데이터셋에는 307,916개의 ARMv8과 RISC-V 어셈블리 파일 쌍이 포함되어 있다.
테스트 데이터셋은 Project Euler 45개, Benchmarks 16개, Unix Commands 11개의 C 구현체로 구성되어 있다.
테스트 데이터셋의 평균 길이는 Project Euler 159줄, Benchmarks 484줄, Unix Commands 96줄이다.
引用
"Maintaining legacy software requires many software and systems engineering hours. Assembly code programs, which demand low-level control over the computer machine state and have no variable names, are particularly difficult for humans to analyze."
"Automated symbolic program translation approaches guarantee correctness but struggle to scale to longer programs due to the exponentially large search space. Their rigid rule-based systems also limit their expressivity, so they can only reason about a reduced space of programs."
"GUESS & SKETCH extracts alignment and confidence information from features of the LM then passes it to a symbolic solver to resolve semantic equivalence of the transpilation input and output."