Diferencia entre etiqueta y fuction en conjunto - sintaxis Intel

chutney:

Actualmente estoy aprendiendo montaje y me encontré con subrutinas. Ahora, ¿cómo saber si algo es una etiqueta o una subrutina ya que se declaran de la misma manera?

label:
subroutine:

La única cosa que sé es que utiliza llamado a subrutinas y JMP para etiquetas.

Erik eidt:

Una subrutina es una cosa conceptual - encarnado por una secuencia de instrucciones - que está destinado a ser llamado, aceptar parámetros, hacer algo, y potencialmente devolver un valor a la persona que llama. Una subrutina sigue algún convenio de llamada, que es un acuerdo sobre cómo pasar parámetros y valores de retorno, y la forma de registros de acciones de la CPU entre llamante y llamado.

Una etiqueta meramente nombres un único punto en cualquiera de código o de datos. Las etiquetas se utilizan para nombrar el punto de entrada de una subrutina, para nombrar el comienzo de algunos datos, por nombrar puntos en el código para la construcción de construcciones de flujo de control, como si-entonces-sino, hacer mientras-..

En algunos ensambladores, por ejemplo MASM, hay una sintaxis especial que puede utilizar para identificar las subrutinas, como diferentes de etiquetas ordinarly; Sin embargo, esto no es universal, y, muchos montadores no diferencian etiquetas subrutinas de otras etiquetas.

Las etiquetas que son exportados para su uso por otros archivos (por ejemplo, a través de una directiva global) son típicamente las subrutinas (puntos de entrada subrutina), pero también pueden ser datos.


He aquí un ejemplo de por qué a veces pensamos de etiquetas como la identificación de un punto en el código en lugar de un bloque de código o secuencia de instrucciones.

...
if ( a0 == 0 ) { a1++; }
...

podemos ver esto en el estilo de etiqueta si-Goto de montaje como este (en MIPS montaje):

    ...
    bnez $a0, skipThen
    addi $a1, $a1, 1
skipThen:
    ...

Los marcadores anteriores identifica el punto más allá de la parte-entonces de esta sentencia if-then. Por ramificación allí, nos saltamos la parte-entonces, y transferir el flujo de control a la siguiente instrucción, sea lo que sea (representada aquí por ...).

Debido al estilo goto-etiqueta si-, el montaje nos hace crear etiquetas constantemente. etiquetas de nombres puede ser tedioso, por lo que a veces es más fácil de usar etiquetas simples, por ejemplo, L1, L2, L3. Algunos ensambladores apoyan esto con etiquetas numeradas, por ejemplo, $ 1, $ 2 (estas etiquetas no se pueden exportar, y con algunos ensambladores, hay maneras incluso reutilizar estos números dentro del mismo archivo sin entrar en conflicto.)

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=342801&siteId=1
Recomendado
Clasificación