2012-03-02 11 views
14

Parece que las pruebas unitarias se han puesto de moda en estos días y sé que muchos de ustedes pensarán: "Bueno, ¿por qué no usar el lenguaje X con el marco Y?" Pero propongo esta idea más como una prueba de concepto, o como recuerdo nostálgico de mis primeros años con la programación de computadoras.¿Qué marcos de prueba unitarios están disponibles para el ensamblador x86?

estoy a saber trabajar en BSD se ejecuta en x86 con NASM, y han reflexionado sobre el uso de secuencias de comandos shell con esperar (1) para hacer las pruebas unitarias pero quería saber de antemano:

Qué pruebas unitarias marcos están disponibles para aplicaciones escritas en ensamble x86?

Respuesta

3

Si sus rutinas de ensamblador tienen o pueden tener una interfaz 'C', se puede emplear cualquier marco de prueba de la unidad C/C++.

Debe mover la gran mayoría de su aplicación a una biblioteca a la que se puede llamar desde programas 'C' (es decir, un marco de prueba). Para finalmente crear su aplicación, escriba un front-end de ensamblador que solo llame a su nueva biblioteca.

+0

Honestamente, es una práctica generalmente genial y muy portátil. Así que puede funcionar bien teniendo en cuenta la plataforma de Unix con la que estoy trabajando. Pero la aplicación aún incurriría en el exceso de C y esperaba tener la menor cantidad de dependencias posible. –

+0

Puede organizar su código para que su código de ensamblador esté en una o más bibliotecas, sus envolturas 'C' en un conjunto de bibliotecas paralelas recién llamadas por las pruebas, y su aplicación llama directamente al código de ensamblador. – quamrana

+0

@DwightSpencer Debe desconectar las dependencias de su módulo (incluso aquellas dentro de su aplicación) de todos modos. El resultado serán fragmentos de código que son independientes de la llamada (excepto en convenciones de llamadas incompatibles). La vinculación dinámica también puede hacer un gran favor con estos ... – Powerslave

1

IMHO La noción de pruebas unitarias no es aplicable a lenguajes de bajo nivel como ensambladores. Las pruebas unitarias se asocian con la funcionalidad de la unidad de prueba de un método, clase, procedimiento. En mi opinión, tales cosas no existen en el código de ensamblado; por supuesto, es posible declarar procedimientos en algunos ensambladores (fue posible en TASM y MASM), pero no son algo que exista en el código de máquina.

Sin embargo, creo que todavía podemos considerar pruebas automatizadas de código ensamblador. Personalmente, no he oído hablar de ningún marco que permita eso.

+0

También parece que yasm/nasm tiene esa misma capacidad tasm/masm a través del uso de macros; He estado armando una implementación de stdlib para aquellos ensambladores mencionados. Pero sí estoy de acuerdo en que debería haber más pruebas automatizadas para el código de ensamblaje. Especialmente siendo así de cerca del metal desnudo. –

+0

Bueno, el manejo de estructuras en modo ideal, por ejemplo, es bastante obsoleto y los objetos, a bajo nivel, son solo indirectos de todos modos, por lo que es bastante factible tener dichos marcos. Nunca he oído hablar de ninguno. La buena noticia es que ser compatible con C/C++ depende del programador, por lo que al final del día, una lib de C++ simplemente hará el trabajo. – Powerslave

Cuestiones relacionadas