2012-03-02 1 views
14

은 그 단위 테스트는 요즘 모든 분노가 될 것 같다 나는 당신의 많은 사람들이 생각하는 것 알고 : "그럼 왜 그냥 이미 프레임 워크 Y와 함께 언어 X를 사용" 그러나 나는이 개념을 개념의 증거로 제시하거나, 컴퓨터 프로그래밍에 대한 나의 초기시기에 향수를 불러 일으켰다.x86 어셈블러에는 어떤 단위 테스트 프레임 워크가 있습니까?

나는 즉 NASM과 x86에서 실행 BSD에서 일하고 있어요 및 기대 (1) 단위 테스트를 할 수 있지만 사전에 알고 싶어와 쉘 스크립트의 사용을 통해 심사숙고했다 :

어떤 단위 테스트 프레임 워크는 x86 어셈블리로 작성된 응용 프로그램에서 사용할 수 있습니까? 어셈블러 루틴이 또는 'C'인터페이스, 다음 어떤 C/C++ 유닛 테스트 프레임 워크를 사용할 수있다을 부여 할 수 있습니다 경우

답변

3

.

당신은 (즉, 테스트 프레임 워크) 'C'프로그램에서 호출 할 수있는 라이브러리로 응용 프로그램의 대부분을 이동해야합니다. 마지막으로 응용 프로그램을 빌드하려면 새 라이브러리를 호출하는 어셈블러 프런트 엔드를 작성하십시오. 단위 테스트의 개념은 어셈블러로 낮은 수준의 언어에 적용 할 수 없습니다 이럴

+0

솔직히 말해서, 그것은 일반적으로 훌륭한 연습이며 꽤 휴대하기 쉽습니다. 그래서 내가 일하고있는 유닉스 플랫폼을 고려하면 잘 작동 할 것이다. 그러나 응용 프로그램은 여전히 ​​C에서 오버 헤드가 발생할 것이고 나는 가능한 한 적은 의존성을 가지기를 희망하고있었습니다. –

+0

어셈블러 코드가 하나 이상의 라이브러리에 있고, 'C'래퍼가 테스트에 의해 호출 된 병렬 라이브러리 집합에 포함되도록 코드를 구성 할 수 있으며 응용 프로그램에서 직접 어셈블러 코드를 호출합니다. – quamrana

+0

@DwightSpencer 어쨌든 당신의 모듈 종속성 (심지어 당신의 응용 프로그램 내부에도)을 분리해야합니다. 결과는 호출자를 불가지론하는 코드 조각이됩니다 (호환되지 않는 호출 규칙을 제외하고). 동적 인 연결은 또한 당신에게 이러한 큰 호의를 줄 것입니다. – Powerslave

1

. 단위 테스트는 메소드, 클래스, 프로 시저의 단위 기능을 테스트와 연관시킵니다. 제 생각에는 그런 것들은 어셈블리 코드에는 존재하지 않습니다. 물론 어셈블러 (TASM과 MASM에서는 가능합니다)에서 프로 시저를 선언 할 수는 있지만 기계 코드에 존재하지는 않습니다.

그러나, 나는 우리가 여전히 어셈블리 코드의 자동화 된 테스트를 고려할 수 있다고 생각합니다. 개인적으로, 나는 그것을 허용 할 수있는 어떤 틀에 대해서도 듣지 못했다.

+0

또한 yasm/nasm은 매크로의 사용을 통해 동일한 tasm/masm 기능을가집니다. 나는 위에서 언급 한 어셈블러들을 위해 stdlib의 구현을 정리했다. 하지만 실제로 어셈블리 코드에 대한 자동화 된 테스트가 있어야한다는 것에 동의합니다. 특히 베어 메탈에 가깝습니다. –

+0

예를 들어, 이상적인 모드 구조체 핸들링은 거의 객체 틱이고 객체는 낮은 레벨에서 그냥 어쨌든 방아쇠 일 뿐이므로 이러한 프레임 워크를 사용하는 것이 가능합니다. 나는 결코 들어 본 적이 없다. 좋은 소식은, C/C++과 호환되는 것은 프로그래머에게 달려 있으므로 하루가 끝날 때 C++ 라이브러리만으로도 작업을 수행 할 수 있다는 것입니다. – Powerslave

관련 문제