¿como y para que funcionan los flags?

  • 1 Respuestas
  • 3872 Vistas

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado proxy_lainux

  • *
  • Underc0der
  • Mensajes: 126
  • Actividad:
    0%
  • Reputación 0
  • belial grimoire
    • Ver Perfil

¿como y para que funcionan los flags?

  • en: Junio 19, 2016, 08:22:43 pm
¿Alguien me podría dar una explicación de para que y como funcionan los flags? CF PF IF...

Es que no entiendo para que sirven y como funcionan, he buscado información y se menciona sobre que es uso aritmético, pero realmente no comprendo en teoría para que sirve y como funcionan

Espero me puedan ayudar con una rápida explicación sobre esto

Saludos

Desconectado grep

  • *
  • Underc0der
  • Mensajes: 187
  • Actividad:
    0%
  • Reputación 4
    • Ver Perfil
    • Grep's personal site

Re:¿como y para que funcionan los flags?

  • en: Junio 20, 2016, 11:43:40 am
Los flags reflejan el estado del procesador en un momento determinado.

Estos se activan o desactivan con cada instrucción que ejecutas.

Selen ser utilizados para hacer una especie de if-else, como en otros lenguajes de programación.

Los flags suelen tener el tamaño de un bit, por eso se encuentran todos en un registro llamado FLAGS.

En un procesador x86 el registro FLAGS tiene un tamaño de 32bits (osea, puede tener 32 flags). Ahí encuentras que su primer bit es el flag CF (Carry Flag), su tercer bit es el PF (Parity Flag), y su décimo bit es el flag IF (Interrupt enable flag).

Tu programa puede chequear estos flags para hacer una u otra cosa, por ejemplo:
1.- Haces una operación aritmética y tu resultado es 0000 (cero decimal).
2.- Porque el resultado es 0000 en flag ZF (Zero Flag) se habilita.
3.- En la siguiente instrucción tienes "JZ <location>".
4.- Como JZ comprueba el estado del flag ZF, entonces JZ salta a otro lugar en tu programa.

Te comento de los siguientes flags solo para darte una idea:

CF (Carry Flag)
Este flag te indica que en una instrucción aritmética que ejecutaste "se acarreó (o se llevó prestado) un bit". Por ejemplo, cuando sumas 1 + 99 obtienes 100 (te llevaste prestado un 1). En términos de bits, suponiendo que el tamaño de un registro es cuatro bits, si haces 1111 + 0001 obtienes 0000 y el CF se habilita (se setea a 1).

PF (Parity Flag)
Este flag te suele indicar que "has obtenido un conjunto de bits con una cantidad par de 1s". Por ejemplo, si realizas una operación aritmética y obtienes 0110, entonces PF se habilita (se setea a 1). Por otro lado si obtienes, por ejemplo 0010, entonces PF es 0 (deshabilita).

IF (Interrupt enable flag)
Este es más dificil de explicar. Si el valor de este flag es 1, entonces "el CPU procesará las interrupciones enmascarables". Si el flag es 0, entonces "el CPU ignora las interrupciones enmascarables".

Una interrupción enmascarable es aquella que puede ser ignorada por pas instrucciones de un programa.

El flag IF, comunmente, solo puede ser modificado por el sistema operativo.

Espero que esto pueda servir,

Saludos
« Última modificación: Junio 20, 2016, 07:23:43 pm por grep »

 

Crear un archivo .vbs para ejecutar un archivo .bat en invisible

Iniciado por NMS

Respuestas: 2
Vistas: 11936
Último mensaje Marzo 13, 2017, 10:37:57 pm
por sadfud
[SOLUCIONADO] Ayuda para encontrar "airdecrypt"

Iniciado por Typh0n

Respuestas: 2
Vistas: 6252
Último mensaje Enero 13, 2014, 07:11:18 am
por aika
allegro 5,opngl,sdk para fan game modo storyboard game

Iniciado por Mr.Tru

Respuestas: 2
Vistas: 3324
Último mensaje Mayo 23, 2018, 01:19:20 pm
por Mr.Tru
[SOLUCIONADO] Desencriptacion de una imagen para extraer la imagen original

Iniciado por stuxnet13

Respuestas: 3
Vistas: 3853
Último mensaje Enero 07, 2016, 07:55:01 pm
por blackdrake
[SOLUCIONADO] ¿Sirve para pentesting "Huayra GNU/Linux 2.0"?

Iniciado por Doblez

Respuestas: 2
Vistas: 3145
Último mensaje Mayo 13, 2016, 08:44:59 pm
por Doblez