18 / 18 / 6
Регистрация: 02.07.2011
Сообщений: 67

Вывод координат мыши

18.05.2014, 21:10. Показов 1148. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Такая же проблема, но для ubuntu linux, x86_64, nasm. Составил работающую программу на языке си. Основа взята с сайта stackowerflow.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <X11/Xlib.h>
#include <unistd.h>
#include <stdio.h>
 
int main(void) {
    Window window_returned;
    int root_x, root_y;
    int win_x, win_y;
    unsigned int mask_return;
 
    Display *display = XOpenDisplay(NULL);
 
    Window root_window = XRootWindow(display, 0);
 
    XQueryPointer(display, root_window, &window_returned,
            &window_returned, &root_x, &root_y, &win_x, &win_y,
            &mask_return);
 
    printf("Mouse is at (%d,%d)\n", root_x, root_y);
 
    XCloseDisplay(display);
    return 0;
}
Эту программу я сейчас перевожу на ассемблер. Размер структур данных Display и Window мне неизвестен. Отладчика нет. Есть вопросы:

1) Можете объяснить пожалуйста, как возвращается указатель на структуру?
C
1
Display *display = XOpenDisplay(NULL);
Память выделяется в стеке и возвращается указатель на неё через регистр rax? Если изначально стек выглядел так:
Code
1
[ ][    ][ ][ ][ ][ ][rsp][ ][ ][rbp][ ][ ]
То после выхода из процедуры он будет выглядеть примерно таким образом? Два возможных варианта:
Code
1
2
[ ][rax*][*][*][*][*][rsp][ ][ ][rbp][ ][ ]
[ ][ *  ][*][*][*][*][rsp][ ][ ][rbp][ ][ ]
Где звёздочками обозначено место, куда была записана структура.

2) Как возвращается структура?
C
1
Window root_window = XRootWindow(display, 0);
Думаю, примерно так:
Code
1
2
   [ ][ ][ ][ ][ ][ ][rsp][ ][ ][rbp][ ][ ] ->
-> [ ][*][*][*][*][*][rsp][ ][ ][rbp][ ][ ]
Регистру rax тогда не обязательно указывать на начало структуры в стеке?

3) Как, используя ABI, передать много аргументов в подпрограмму?
C
1
2
3
XQueryPointer(display, root_window, &window_returned,
            &window_returned, &root_x, &root_y, &win_x, &win_y,
            &mask_return);
Должно получиться что-то похожее:
Assembler
1
2
3
4
5
6
; нужно в стек поместить структуры display и root_window. А потом:
mov rdi, window_returned
mov rsi, root_x
mov rdx, root_y
mov rcx, win_x
; ???
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.05.2014, 21:10
Ответы с готовыми решениями:

Вывод координат курсора мыши
Здравствуйте! У меня вопрос по выводу координат курсора мыши. Моя программа при нажатии мыши выводит строку, но никак не получаеться...

Вывод координат курсора мыши
Помогите написать программу/ Задание: Создать окно приложения выводящие текущие координаты курсора. Спасибо.

Вывод координат курсора мыши
Требуется реализовать следующую простую задачу: перемещаем курсор по редактору формы (textEdit) и его координаты (курсора) должны...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.05.2014, 21:10
Помогаю со студенческими работами здесь

Вывод на экран координат мыши
ает using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...

Вывод координат мыши на экран
Здравствуйте, вот часть задачи работы с мышью. Кто может помочь оптимизировать процедуру proc (выведение координат мыши на экран) SST...

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

Вывод координат курсора мыши на экран
Доброго времени суток, друзья! Будьте добры, помогите мне сделать одну полезную штучку - вывод координат на экран. В общем, суть такая: я...

Вывод в Label приращений координат указателя мыши
Считываю координаты мышки через Cursor.Position.Y; Cursor.Position.X; и записываю в обычные переменные var, программа выполняется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: показать затраченные материалы за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В качестве. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru