Форум программистов, компьютерный форум, киберфорум
Assembler: Linux
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
1 / 1 / 0
Регистрация: 19.08.2014
Сообщений: 59
1

Текущее время в структуре

15.09.2017, 10:03. Показов 1374. Ответов 5

Author24 — интернет-сервис помощи студентам
При создании сообщения требуется указать время (TimeStamp) его создания в наносекундах (uint64), код

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
    ;; yasm -g dwarf2 -f elf64 -a x86 message.asm -o msg.o
    ;; ld -o msg msg.o
 
    segment .bss
    segment .data
 
packet istruc message
    at message.length_mes,      dw  0x2800
    at message.message_id,      dw  0x0100
    at message.scheme_id,       dw  0x0100
    at message.version,     dw  0x0100
    at message.timestamp,       dq  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
    at message.keeepaliveinterval,  dw  0xe8030000
    at message.credentials,     dq  0
    at message.ext,         dw  0
iend
 
timeval: ;struct
        tv_sec  dq 0
        tv_usec dq 0
    
packet_len              equ $ - packet
    segment .text
    global _start
 
_start:
    struc message
    .length_mes resw 1
    .message_id resw 1
    .scheme_id  resw 1
    .version    resw 1
    .timestamp  resq 1
    .keeepaliveinterval resw 1
    .credentials    resq 2
    .ext        resw 1
endstruc
 
    mov rsi, timeval    ;   struct timespec *tp
    mov rdi, 0      ;   const clockid_t which_clock - CLOCK_REALTIME
    mov rax, 228        ;   SYS_CLOCK_GETTIME
    syscall
    mov r8, qword [tv_sec]
    mov r9, qword [tv_usec]
    imul r8, 1000000000
    sub r8, r9
    mov qword [message.timestamp], r8
 
    mov rdi, 0
    mov rax, 60
    syscall
при компиляции выдает ошибку -
message.asm:13: error: multiple is negative
message.asm:13: warning: value does not fit in 16 bit field
в чем причина и как ее исправить?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.09.2017, 10:03
Ответы с готовыми решениями:

Дано текущее время (H M S), где H - это часы, M - это минуты, а S - секунды. Напи- сать программу, определяющую время спустя 1 секунду
Дано текущее время (H M S), где H - это часы, M - это минуты, а S - секунды. Напи- сать программу,...

Дано текущее время (M S), где M - это минуты, а S - секунды
Дано текущее время (M S), где M - это минуты, а S - секунды. Написать программу, определяющую...

Как получить текущее Текущее Unix epoch время в милисекундах?
Хочу получить через эксель выписку егрюл egrul.nalog.ru Общий порядок такой: 1) Отправляю ПОСТ...

Создайте командный файл, который спрашивает: «Вы хотите узнать текущее время или текущую дату?» – и в зависимости от ответа выдает на экран текущее вр
Здраствуйте очень сильно нужна помощь в написании батников кто может помогите пожалуйста!!! 1...

5
Заблокирован
15.09.2017, 13:57 2
Убрать нули с запятыми. Ну и [message.timestamp], message это не переменная, а тип.
0
1 / 1 / 0
Регистрация: 19.08.2014
Сообщений: 59
15.09.2017, 14:07  [ТС] 3
с нулями понятно, сделал
message.asm:13: warning: value does not fit in 16 bit field
а вот с [message.timestamp] не совсем.
0
Заблокирован
15.09.2017, 14:28 4
Цитата Сообщение от compressor Посмотреть сообщение
а вот с [message.timestamp] не совсем.
Тебе надо открыть документацию по yasm и посмотреть как создать экземпляр структуры и как к нему обращаться. Попробуй.
1
1 / 1 / 0
Регистрация: 19.08.2014
Сообщений: 59
16.09.2017, 14:55  [ТС] 5
Скорее всего здесь надо выравнивание по 16 битам смотреть в x64/long mode.

Добавлено через 23 часа 6 минут
Спасибо no_way,
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
    ;; yasm -g dwarf2 -f elf64 -a x86 message.asm -o msg.o
    ;; ld -o msg msg.o
 
    segment .bss
    segment .data
 
packet istruc message
    at message.length_mes,      dw  0x2800
    at message.message_id,      dw  0x0100
    at message.scheme_id,       dw  0x0100
    at message.version,     dw  0x0100
    at message.timestamp,       dq  0
    at message.keeepaliveinterval,  dd  0xe8030000
    at message.credentials,     dq  0
    at message.ext,         dw  0
iend
 
packet_len              equ $ - packet
 
timeval: ;struct
        tv_sec  dq 0
        tv_usec dq 0
    
    segment .text
    global _start
_start:
 
struc message
    .length_mes resw 1
    .message_id resw 1
    .scheme_id  resw 1
    .version    resw 1
    .timestamp  resq 1
    .keeepaliveinterval resd 1
    .credentials    resq 2
    .ext        resw 1
endstruc
    mov rsi, timeval    ;   struct timespec *tp
    mov rdi, 0      ;   const clockid_t which_clock - CLOCK_REALTIME
    mov rax, 228        ;   SYS_CLOCK_GETTIME
    syscall
    mov r8, qword [tv_sec]
    mov r9, qword [tv_usec]
    imul r8, 1000000000
    sub r8, r9
    mov qword [packet + message.timestamp], r8
 
    mov rdi, 0
    mov rax, 60
    syscall
0
no_way
16.09.2017, 17:48     Текущее время в структуре
  #6

Не по теме:

compressor, молодец! :good:

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.09.2017, 17:48

Выводить текущее время в определенные позиции консоли во время работы
Портирую консольное приложение. Есть код, который работал после компиляции в BC++ 3.1, после...

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

Текущее время
Подскажите как вернуть значение текущего времяни в секундах? Или можно по отдельности целые...

Текущее время
Как оформить формулу времени, чтобы находмла год например есть год рождения и вывести надо на...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru