Но он же явно хотел в monitor_thread переключать контексты.
message
написано прямо в функции печати, то очевидный ответ на это: "не надо так делать". Хочешь напечатать сообщение -- передавай адрес строки с сообщением как параметр функции. ошибка появится если скопируешь и вставишь message db 'Flex OS' после первого message
string message = "hello";
string message = "world";
cout << message << ' ' << message;
message
, а как-то более осмысленно, например banner_message
, а другую строку -- по-другому, в соответствии тому, какую функцию она несёт? так значение cs в этой формуле это не логический адрес, а так же значение из регистра т.е. cs 48FE?
в интернете представлена такая формула в ином виде CS * 16+ IP это не одно и то же?
Если считать по ней получится 48FFF
cs:0019
-- правильный ответ. Но возможно имеется в виду адрес к которому обращается текущая инструкция, [#prog_3#a]
. Чему равен этот логический адрес написано наверху в окне кода -- ds:0000
, в физический адрес он транслируется ровно так же: ds * 10h + 0 = 48ed0h
объясните поподробней про формулу подсчета физического адреса
10h - это константа или откуда это значение?
ip - это из окна регистров?
Как получилось значение 48ff9?
48feh * 10h + 19h = 48fe0h + 19h = 48ff9h
решил количество "жизней" в игре накинуть ? :) Эх ты. Мамкин ревес-инженер.
Мне кажется, что при наличии желания писать нормально, С ничуть не уступает С++ в возможностях выражения абстракции.
Она должна быть отделена в голове проектировщика. Если это есть, то писать на С в таком стиле можно со сравнимыми усилиями. Если этого нет, на С++ можно наворотить такого, что мало не покажется.
Мне кажется, что основное преимущество С++ -- в наличии STL. Сравнимых по удобству и эффективности библиотек для С решающих базовые организационные вопросы я, к сожалению, назвать не могу.