Форум программистов, компьютерный форум CyberForum.ru

Виртуальная машина - 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 argc, _TCHAR* argv) {
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|| undefined reference to `_imp___ZN5boost6thread12start_threadEv'| obj\Release\main2.o:main2.cpp|| undefined reference to `_imp___ZN5boost6thread4joinEv'| obj\Release\main2.o:main2.cpp|| undefined... 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; }; int GetHeight()
C++ Рекурсия, факториал Недавно увидел как пример рекурсии: #include<iostream> using namespace std; int f(int n) { if (n == 1) return 1; return f(n-1)*n; } подробнее

Показать сообщение отдельно
PinkPink
9 / 9 / 2
Регистрация: 10.05.2012
Сообщений: 279
30.10.2012, 22:39  [ТС]     Виртуальная машина
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
У процессора есть регистр с флагами. Это набор битов, которые соответствуют определённым состояниям и устанавливаются определёнными командами при определённых условиях. К примеру, для 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)
спасибо, кажется понятно.
т.е. если мы хотим безусловный переход, то пишем jmp
а если условный, то команда перехода будет обозначаться по разному в зависимости от того какой флаг проверять?
какие основные и очень важные флаги есть? если например я попытаюсь выскочить за границу стека?
и ещё вопрос. переход к подпрограмме и возврат, вроде бы всё понятно, но немного не могу себе представить это в коде... подпрограмма где будет распологаться в отличие от основной программы? в начале? или в принципе где угодно, просто чтобы после подпрограммы дальше код не выполнялся делается возврат?
 
Текущее время: 12:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru