• Добро пожаловать на Черная дыра.
 

Кипр, как он есть!

Автор Дмитрий Виницкий, 01.10.2012 15:25:46

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Lunatik-k

Дуплекс, дорогой, помоги !
Все ли правильно тут написано ?

void _far _cdecl StrategyProc()
{
    unsigned int r_es;
    unsigned int r_bx;
    void *ur_es = &r_es;
    void *ur_bx = &r_bx;
  _asm {
  mov ur_es, es;
  mov ur_bx, bx;
 
    }
      rh_off = r_bx;
      rh_seg = r_es;
}
Ростки правды похоронят империю лжи.

Штуцер

Цитата: Lunatik-k от 18.07.2025 15:36:19Дуплекс, дорогой, помоги !
"Любезный друг маменька!"  (с)
Но в виде обломков различных ракет
Останутся наши следы!

Ну-и-ну

Цитата: Lunatik-k от 18.07.2025 15:36:19Все ли правильно тут написано ?
Неправильно. Носок не тянете, равнения нет...

Ну-и-ну

Цитата: Dulevo от 18.07.2025 12:00:03Т.е он сверчит потому что несмазанный?
"Может быть он голодный?" (с) Смешарики, Ля

Старый

Цитата: Lunatik-k от 18.07.2025 15:36:19Дуплекс, дорогой, помоги !
Все ли правильно тут написано ?

void _far _cdecl StrategyProc()
{
    unsigned int r_es;
    unsigned int r_bx;
    void *ur_es = &r_es;
    void *ur_bx = &r_bx;
  _asm {
  mov ur_es, es;
  mov ur_bx, bx;
 
    }
      rh_off = r_bx;
      rh_seg = r_es;
}
Фоксбат файл? 
1. Ангара - единственная в мире новая РН которая хуже старой (с) Старый Ламер
2. Назначение Роскосмоса - не летать в космос а выкачивать из бюджета деньги
3. Ракеты у Маска длиннее и толще чем у Роскосмоса
4. Чем мрачнее реальность тем ярче бред (с) Старый Ламер

Дмитрий Виницкий

Цитата: Старый от 18.07.2025 18:46:36Фоксбат файл? 
Напомнило команды в Palm для подключения телефона с GPRS через инфрапорт  ;D

Там тоже, если пропустить пару указателей, то нефига не работает ;D
+35797748398

Lunatik-k

#8186
Цитата: Старый от 18.07.2025 18:46:36
Цитата: Lunatik-k от 18.07.2025 15:36:19Дуплекс, дорогой, помоги !
Все ли правильно тут написано ?

void _far _cdecl StrategyProc()
{
    unsigned int r_es;
    unsigned int r_bx;
    void *ur_es = &r_es;
    void *ur_bx = &r_bx;
  _asm {
  mov ur_es, es;
  mov ur_bx, bx;
 
    }
      rh_off = r_bx;
      rh_seg = r_es;
}
Фоксбат файл?

Это кусок загрузочного драйвера типа .sys для DOS на С(С++).
Inti занял меня на долго, дал ссылку на ИИ.
С ним интересно общаться, но вот просить примеры по софту, это опасно.
ИИ выдает много смешенных примеров, в которых: один кусок, может быть написан на Borland_c, другой на Тубо Си, третий кусок на OpenWatcom, четвертый кусок Watcom 11.0, просишь прислать пример для DOS присылает для Windows.

Ни один из присланных примеров сразу не компилируется и не линкуется.
Вещь конечно занятная, особенно, для тренировок, по выискиванию ошибок.
Но надеюсь доделать свою задумку, обеспечивающую преодоление некоторых сложностей.
 
Ростки правды похоронят империю лжи.

Штуцер

Цитата: Старый от 18.07.2025 15:14:11Он не даёт капнуть на него маслом.
Не надо на кончик. Надо на бочек.
Но в виде обломков различных ракет
Останутся наши следы!

Дмитрий Виницкий

Цитата: Lunatik-k от 18.07.2025 19:41:21Ссылка на ИИ
Этот код написан на C с использованием встроенного ассемблера для 16-битной архитектуры x86, и выглядит как часть драйвера или системного кода под DOS или Windows 3.x. Давайте разберём его подробно.

🔧 Что происходит в коде
oid _far _cdecl StrategyProc()

  • _far _cdecl — соглашения о вызове, характерные для 16-битной модели памяти (например, под DOS).
    • _far — означает, что функция может находиться в другом сегменте памяти (используется сегмент:сместо).
    • _cdecl — стандартное соглашение о вызове (параметры передаются справа налево, вызывающий очищает стек).

⚙️ В теле функции:
unsigned int r_es;
unsigned int r_bx;
void *ur_es = &r_es;
void *ur_bx = &r_bx;


🔄 Вставка ассемблера
_asm {
    mov ur_es, es;
    mov ur_bx, bx;
}

❗Это неправильно
mov ur_es, es не работает так, как предполагалось. В x86 невозможно напрямую выполнить
mov [ur_es], es, если
ur_es — это переменная C. Нужно использовать правильный синтаксис для записи регистра в память.
Правильная версия выглядела бы примерно так (в зависимости от компилятора, например Microsoft C):
_asm {
    mov ax, es
    mov r_es, ax
    mov bx, bx
    mov r_bx, bx
}

или, если доступна запись через указатель:
_asm {
    mov ax, es
    mov [r_es], ax
    mov ax, bx
    mov [r_bx], ax
}


📥 Завершающая часть
rh_off = r_bx;
rh_seg = r_es;


🧠 Вывод: что это такое
Это — функция стратегии (Strategy Routine) для DOS-драйвера, которая сохраняет адрес обратного вызова, переданный операционной системой, через регистры
ES:BX. Такие функции вызывались, например, для обработки операций I/O (стратегия + интерактор).

❗Резюме
  • Код предназначен для 16-битной среды (DOS/BIOS/старые Windows).
  • Ошибки в синтаксисе ассемблера.
  • Назначение: сохранить обратный адрес (ES:BX), переданный операционной системой.
  • Вероятно, часть драйвера (например,
    DEVICE= в
    CONFIG.SYS).
Если нужно, могу переписать этот код корректно под MASM или Microsoft C.

+35797748398

Штуцер

Но в виде обломков различных ракет
Останутся наши следы!

Lunatik-k

#8190
Цитата: Дмитрий  Виницкий от 18.07.2025 19:47:53
Цитата: Lunatik-k от 18.07.2025 19:41:21Ссылка на ИИ
Этот код написан на C с использованием встроенного ассемблера для 16-битной архитектуры x86, и выглядит как часть драйвера или системного кода под DOS или Windows 3.x. Давайте разберём его подробно.

🔧 Что происходит в коде
oid _far _cdecl StrategyProc()

  • _far _cdecl — соглашения о вызове, характерные для 16-битной модели памяти (например, под DOS).
    • _far — означает, что функция может находиться в другом сегменте памяти (используется сегмент:сместо).
    • _cdecl — стандартное соглашение о вызове (параметры передаются справа налево, вызывающий очищает стек).

⚙️ В теле функции:
unsigned int r_es;
unsigned int r_bx;
void *ur_es = &r_es;
void *ur_bx = &r_bx;


🔄 Вставка ассемблера
_asm {
    mov ur_es, es;
    mov ur_bx, bx;
}

❗Это неправильно
mov ur_es, es не работает так, как предполагалось. В x86 невозможно напрямую выполнить
mov [ur_es], es, если
ur_es — это переменная C. Нужно использовать правильный синтаксис для записи регистра в память.
Правильная версия выглядела бы примерно так (в зависимости от компилятора, например Microsoft C):
_asm {
    mov ax, es
    mov r_es, ax
    mov bx, bx
    mov r_bx, bx
}

или, если доступна запись через указатель:
_asm {
    mov ax, es
    mov [r_es], ax
    mov ax, bx
    mov [r_bx], ax
}


📥 Завершающая часть
rh_off = r_bx;
rh_seg = r_es;


🧠 Вывод: что это такое
Это — функция стратегии (Strategy Routine) для DOS-драйвера, которая сохраняет адрес обратного вызова, переданный операционной системой, через регистры
ES:BX. Такие функции вызывались, например, для обработки операций I/O (стратегия + интерактор).

❗Резюме
  • Код предназначен для 16-битной среды (DOS/BIOS/старые Windows).
  • Ошибки в синтаксисе ассемблера.
  • Назначение: сохранить обратный адрес (ES:BX), переданный операционной системой.
  • Вероятно, часть драйвера (например,
    DEVICE= в
    CONFIG.SYS).
Если нужно, могу переписать этот код корректно под MASM или Microsoft C.



Дмитрий самое интересное, несмотря на указание ИИ, что мол это не правильный синтаксис, компилятор Borland C
проглотил этот код ассемблера(без дополнительных квадратных скобок), не выдав ни одной ошибки.

А все присылаемые примеры ИИ напрочь отказывались компилироваться по разным причинам.
Ростки правды похоронят империю лжи.

Ну-и-ну

Забавно, что за программирование мне платят аккурат 35 лет. Продуктов вышло немеряно на более чем паре десятков платформ (пересчитал, жуткое дело). Но я ни разу не писал _far. Бог миловал, можно сказать.

Lunatik-k

Цитата: Ну-и-ну от 18.07.2025 20:54:33Забавно, что за программирование мне платят аккурат 35 лет. Продуктов вышло немеряно на более чем паре десятков платформ (пересчитал, жуткое дело). Но я ни разу не писал _far. Бог миловал, можно сказать.

Самое забавное я не программист, просто любитель, иногда(очень редко) подрабатываю там где нужно решать сложные управляющие задачи.   _far это из примера ИИ, очевидно он предполагает, что процедура может располагаться далеко за пределами первого сегмента. Все внутренне тело процедуры пришлось составлять самому, т.к. во всех присланных примера ИИ присылал рассчитанные  Windows или работу с большой памятью.

Ростки правды похоронят империю лжи.

telekast

Цитата: Штуцер от 18.07.2025 19:50:38Что это было?
Очередная попытка программиста бат-файлов загнуть пальцы. ;D
"Вызов" - это флаговтык!
Как тебе такое, "Джон Уик" ?! (с)

telekast

Цитата: Lunatik-k от 18.07.2025 21:20:19
Цитата: Ну-и-ну от 18.07.2025 20:54:33Забавно, что за программирование мне платят аккурат 35 лет. Продуктов вышло немеряно на более чем паре десятков платформ (пересчитал, жуткое дело). Но я ни разу не писал _far. Бог миловал, можно сказать.

Самое забавное я не программист, просто любитель, иногда(очень редко) подрабатываю там где нужно решать сложные управляющие задачи.  _far это из примера ИИ, очевидно он предполагает, что процедура может располагаться далеко за пределами первого сегмента. Все внутренне тело процедуры пришлось составлять самому, т.к. во всех присланных примера ИИ присылал рассчитанные  Windows или работу с большой памятью.

Самое забавное, что ИИ тупой. И если ему явно не указать для какой среды разработки нужен код он так и будет вываливать все, что угодно. В тч и смесь из разных синтаксисов. Просто будет искать по его мнению подходящие куски кода и собирать из них салат. Даже если явно указать, что код надо под, скажем, ВС++, нет гарантий, что он именно на нем и выдаст. Но это дано понять не только лишь всем. ;D
"Вызов" - это флаговтык!
Как тебе такое, "Джон Уик" ?! (с)

vlad7308

Цитата: Ну-и-ну от 18.07.2025 20:54:33Забавно, что за программирование мне платят аккурат 35 лет. Продуктов вышло немеряно на более чем паре десятков платформ (пересчитал, жуткое дело). Но я ни разу не писал _far. Бог миловал, можно сказать.
я писал.
В незапамятные времена. Bcpp 2.0, под DOS. Но не за деньги.
За деньги уже не успел, слава богу.
это оценочное суждение

Штуцер

Цитата: telekast от 19.07.2025 11:59:22
Цитата: Штуцер от 18.07.2025 19:50:38Что это было?
Очередная попытка программиста бат-файлов загнуть пальцы. ;D
Боевик Бат-2
Но в виде обломков различных ракет
Останутся наши следы!

Lunatik-k

#8197
Цитата: Штуцер от 19.07.2025 12:27:28
Цитата: telekast от 19.07.2025 11:59:22
Цитата: Штуцер от 18.07.2025 19:50:38Что это было?
Очередная попытка программиста бат-файлов загнуть пальцы. ;D
Боевик Бат-2

О мудрейший из мудрейших, позвольте попросить Вас, оказать помощь Вашим соратникам, которые не могут разобраться в логических ребусах Владимира Зайцева. Они ждут остроты вашего мышления, чтобы распутать сети расставленные Владимиром Зайцевым. Он их всех запутал в паутине своих мыслей. Они ждут вашего спасительного вердикта в теме "Логическая ревизия лженаучных вымыслов". Не оставьте своих соратников на погибель.
 
Ростки правды похоронят империю лжи.

duplex

Расскажи мне, дружище Лунатик
Отчего ты такой маразматик ?
Но Лунатик мне не отвечает
Лишь сильнее маразмом крепчает.

Стишок. Сам сочинил.  ;D

Штуцер

Цитата: Lunatik-k от 19.07.2025 14:29:18О мудрейший из мудрейших, позвольте попросить Вас, оказать помощь Вашим соратникам, которые не могут разобраться в логических ребусах.
Специалист подобен флюсу, полнота его односторонняя.
Но в виде обломков различных ракет
Останутся наши следы!