Red de conocimiento informático - Aprendizaje de código fuente - Prioridad de operación de expresiones numéricas

Prioridad de operación de expresiones numéricas

En lenguaje ensamblador, existen muchos operadores y operadores diferentes, y sus prioridades de mayor a menor son:

Prioridad: alta

LONGITUD, TAMAÑO, ANCHO , MASK, (), [], . (para campos de estructura), <> (para tipos de registro)

PTR, SEG, OFFSET, TYPE, THIS, (Se utiliza para el prefijo de cobertura de segmento)

*, /, MOD, SHL, SHR

Alto, bajo

+, -

EQ, NE, LT, LE, GT, GE

NOT

Y

OR, XOR

Prioridad: Baja

Corta

Números y operadores MASM

La sintaxis de expresión MASM (Microsoft Macro Assembler) es una herramienta de depuración de Windows anterior a 4.0 para NTSD, CDB, KD y WinDbg.

Valores en expresiones MASM

Los valores en expresiones MASM se pueden ingresar en base 16, 10, 8 o binario.

El comando n (Establecer base numérica) se puede utilizar para establecer la base predeterminada en 16, 10 u 8. Todos los valores numéricos sin prefijo se interpretan en esta base. La base predeterminada se puede enmascarar especificando un prefijo 0x (hexadecimal), un prefijo 0n (decimal), un prefijo 0t (octal) o un prefijo 0y (binario). También puedes agregar el sufijo h para representar valores hexadecimales. Las letras dentro de los valores pueden estar en mayúsculas o minúsculas, por lo que 0x4AB3, 0X4aB3, 4AB3h, 4ab3h 4aB3H significan lo mismo.

Si no hay ningún valor numérico después del prefijo en la expresión, se lee como 0. Por lo tanto, 0 se puede escribir de tres maneras: 0, prefijo seguido de 0 y prefijo solo. Por ejemplo, en hexadecimal, 0, 0x0 y 0x tienen el mismo significado.

Puedes ingresar un valor hexadecimal de 64 bits en el formato xxxxxxxxxx`xxxxxxxxx, o puedes omitir la diéresis (`). Incluir diéresis desactiva la extensión de signos automática; consulte Extensión de signos para obtener más detalles.

Símbolos en expresiones MASM

En una expresión MASM, el valor de cualquier símbolo es su dirección de memoria. Dependiendo del símbolo al que se hace referencia, podría ser la dirección de una variable global, una variable local, una función, una sección, un módulo o cualquier otra etiqueta identificable.

En caso de confusión, puede anteponer el símbolo con el nombre del módulo y un signo de exclamación (!), o simplemente agregar un signo de exclamación. Para obtener más información sobre el reconocimiento de símbolos, consulte Sintaxis de símbolos y coincidencia de símbolos.

Puedes utilizar dos puntos (:::) o dos guiones bajos (__) para marcar miembros de una clase.

Solo se puede utilizar un acento (`) o un apóstrofo (') en un nombre de símbolo precedido por un nombre de módulo y un signo de exclamación.

Operadores numéricos en expresiones MASM

Cualquier componente de una expresión se puede modificar con operadores unarios y dos componentes cualesquiera se pueden combinar con operadores binarios. Los operadores unarios tienen prioridad sobre los operadores binarios. Cuando se utilizan múltiples operadores binarios, se deben seguir las reglas de precedencia establecidas.

Siempre puedes utilizar paréntesis para enmascarar las reglas de precedencia.

Si parte de una expresión MASM está entre paréntesis y tiene dos prefijos @ - @@( ... ) - entonces esa parte se analiza de acuerdo con las reglas de expresión de C++. No puede haber espacios entre dos símbolos @ ni entre corchetes izquierdos. También puede especificar un solucionador de expresiones usando @@c++( ...) o @@masm( ...)) o @@masm( ...).) .

Al realizar operaciones aritméticas, el solucionador de expresiones MASM trata todos los valores y símbolos como tipos ULONG64.

El direccionamiento del operador de dirección unaria supone que DS es el segmento predeterminado. Las expresiones se evalúan en orden de precedencia de operadores. Si dos operadores adyacentes tienen la misma precedencia, la expresión se evalúa de izquierda a derecha.