Форум программистов, компьютерный форум, киберфорум
Наши страницы

Виртуальная машина - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Подключении механизма обнаружение утечек памяти http://www.cyberforum.ru/cpp-beginners/thread646347.html
// output N number of M devide L.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "iostream" #include <conio.h> #include <iomanip> int _tmain(int...
C++ Ошибки на стадии линковки obj\Release\main2.o:main2.cpp|| undefined reference to `__gxx_personality_sj0'| obj\Release\main2.o:main2.cpp|| undefined reference to `_Unwind_SjLj_Register'| obj\Release\main2.o:main2.cpp||... http://www.cyberforum.ru/cpp-beginners/thread646307.html
Ругается на vector C++
Делаю свою хеш-таблицу, заголовочный файл раннего прототипа: #include <vector> class HashTable { private: vector<void*> Table; //код } Почему-то выдаёт такие ошибки:
C++ не компилируется задание: компонент связности графа - кто разберется
#include <iostream> #include <conio.h> #include <stdlib.h> class Stack { private: int stackSize; int* stackArray; int counterOfStackElements; public:
C++ GetWindowRect() Почему возвращается не тот размер окна? http://www.cyberforum.ru/cpp-beginners/thread646274.html
почему возвращается не тот размер окна что я задавал ранее? 800х600 задавал 806х625 вернула ф-я. код int GetWidth() { RECT r; GetWindowRect(WindowHandle, &r); return r.right - r.left;...
C++ Рекурсия, факториал Недавно увидел как пример рекурсии: #include<iostream> using namespace std; int f(int n) { if (n == 1) return 1; return f(n-1)*n; } подробнее

Показать сообщение отдельно
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
30.10.2012, 22:30
У процессора есть регистр с флагами. Это набор битов, которые соответствуют определённым состояниям и устанавливаются определёнными командами при определённых условиях. К примеру, для IA-32 один из них зовётся ZF — zero flag, он устанавливается в 1, если значением последней операции был ноль, и сбрасывается в 0 в противном случае.

Безусловный переход перепрыгивает безусловно, то есть всегда. Ему без разницы, что там и как там в флагах.
Assembler
1
2
3
4
5
6
7
8
        movl a, %eax
        movl b, %ecx
        addl %ecx, %eax  ; сумма a + b в регистре eax
        jmp error
        ; 100500 строк кода
        ret
error:
        ; обработка ошибки
В этом случае переход на метку error будет производится всегда. А если написать следующим образом, тогда переход будет выполняться только в том случае, если сумма равна нулю: addl установит флаг ZF в этом случае, а условный переход jz на него среагирует. Если флаг будет сброшен, то jz ничего не делает:
Assembler
1
2
3
4
5
6
7
8
        movl a, %eax
        movl b, %ecx
        addl %ecx, %eax  ; сумма a + b в регистре eax
        jz error
        ; 100500 строк кода
        ret
error:
        ; обработка ошибки (a + b == 0)
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru