Почему не компилируется макрос?
#define НФлагИнициализации(НАЗВАНИЕ1, НАЗВАНИЕ2) \ Определение2Названия(НАЗВАНИЕ1, НАЗВАНИЕ2) ## флаг_инициализации
error: pasting ")" and "флаг_инициализации" does not give a valid preprocessing token
Определение2Названия, а потом к результату будет приклеен флаг_инициализации, в то время как на самом деле сначала препроцессор делает подстановку НАЗВАНИЕ1 и НАЗВАНИЕ2 и приклеивает флаг_инициализации к скобочке, после чего рапортует тебе о том, что полученный результат выглядит не очень.## флаг_инициализации внутрь Определение2Названия. Моя программа запускается в bosh но не реагирует на прерывания клавиш
keyboard_loop:
mov ah, 0
int 16h
mov ah, 0Eh
int 10h
jmp puts_loopiso образ созданный dd не запускается в VB
mkisofs --no-emul-boot -o test.iso -b test.bin . где test.bin -- это твой бинарник бут-сектора.а загрузочная флешка не отображается в BIOS
return x | y;, то она не может никогда вызвать send, а программа-сервер должна просто завершаться после расчёта НОД.recv, но поскольку ты её не обрабатываешь, то дальше она будет пытаться выводить ответ из буфера в который не было ничего принято.не знаю, как правильно найти НОД в данном случае:
return x | y нужно просто использовать x | y в itoa. Res и всё что с ним связано можно выкинуть, поскольку оно всё равно никак не используется.char *str = malloc(0);
Правильно ли я понимаю, что в str находится начало выделянно памяти на 0 байт
If the size of the space requested is zero, the behavior is implementation-
defined: either a null pointer is returned, or the behavior is as if the size were some
nonzero value, except that the returned pointer shall not be used to access an object.а дальше идет запись символов в память, которая для нас не предназначалась?
Получается, магическим образом, самопроизвольно, между включениями VulkanTexture.h и VulkanglTFModel.h был объявлен define.
Разве препроцессор не последователен и может включать файлы в том порядке, в каком ему заблагорассудится, а не как я написал?
Helpers/VulkanTexture.h и VulkanTexture.h -- это один и тот же файл, или разные? Если один и тот же, то из-за #pragma once в нём он не подключается в VulkanglTFModel.h, а если разные -- то подключается.-c на -E). В выводе препроцессора не видно дефайнов, но видно когда подключается тот или иной файл и видно весь исходный код не относящийся к препроцессору. что тут неправильно?
откуда появился результат после сложения?
что это за значение 88 13 00 00 ......... и Val = 5000 ?
coffeeMachine mix = device + machine;
вызывает перегрузку конструктора копирования, а не перегрузку оператор =, почему?
coffeeMachine mix; mix = device + machine;где найти информацию о внутреннем устройстве long long int и unsigned long long int?
у меня появилось впечатление, что long long int склеен из двух long int и дает псевдо длину в 64 бита. Поправьте меня, если я не прав
Как выучить язык ассемблера?
Посоветуйте какие-нибудь ресурсы по изучению
Как мне найти возраст файла?
3 * 24 * 60 * 60 * 10000000 100-наносекундных интервала (в таких единицах измеряется FILETIME).invoke GetFileTime, hFile, addr ftCreate, NULL, NULL
invoke GetSystemTimeAsFileTime, addr ftNow
mov eax, ftNow.dwHighDateTime
sub eax, ftCreate.dwHighDateTime
cmp eax, (3 * 24 * 60 * 60 * 10000000 / 0x100000000)
jg <файл старше 3 дней>
/* иначе файл младше 3 дней */mov eax, ftNow.dwHighDateTime
sub eax, ftCreate.dwHighDateTime
cmp eax, (3 * 24 * 60 * 60 * 10000000 / 0x100000000)
jg <файл старше 3 дней>
jl <файл младще 3 дней>
mov eax, ftNow.dwLowDateTime
sub eax, ftCreate.dwLowDateTime
cmp eax, (3 * 24 * 60 * 60 * 10000000 % 0x100000000)
jg <файл старше 3 дней>
/* иначе файл младше 3 дней */ пишет, что не может найти "efi.h", хотя он есть в папке inc из Makefile
inc определённую в 7й строке, то ты её нигде не использовал, а сами по себе переменные с произвольными именами в Makefile ничего не значат.gcc -fshort-wchar -I -I/ -I/usr/include -O2 -Wall -fpic -DEFI_FUNCTION_WRAPPER -ffreestanding -nostdlib -c main.c -o main.o main.c:1:10: фатальная ошибка: efi.h: Нет такого файла или каталога
-I ты не указал своего каталога inc, как по-твоему компилятор должен понять, что efi.h нужно там искать?-I$(EFIINC)EFIINC, откуда ты ожидаешь что она возьмётся?inc на EFIINC, lib на EFILIB, crtobj на CRTOBJ и т. д. что значит код
ubfx r0, r0, #1, #1 -- извлечь битовое поле шириной 1 бит (правая единица) начиная с бита №1 (левая единица) из регистра r0 (правый r0) и поместить результат в r0 (левый r0).bx lr -- перейти по адресу в регистре lr, обычно это возврат из подпрограммы.какая между ними разница
ubfx r0, r0, #1, #1ubfx r0, r0, #2, #1что я делаю не так
Вот, что я попытался сделать:
push word 0 pop es mov bx, 0x11*2+0xF000 mov word [es:bx], int10-$$
Я пытался гуглить, всю ночь потратил, …
проблема в отсутствии информации
В микропроцессорах Intel 8086/80186 таблица векторов прерываний расположена в первом килобайте памяти начиная с адреса 0000:0000 и содержит 256 векторов прерываний в формате сегмент:смещение.
boot:
push word 0
pop es
mov bx, 0x11*4
mov word [es:bx + 2], cs
mov word [es:bx], int10 откуда прерывания знают адрес, куда им вернуть результат.
Прерывание в коде int 21h и прочие Это какое?
int -- программное. В отличие от прерывания, инициируемого уровнем или фронтом сигнала подключённого к контроллеру прерываний.выполнение прерывания std::cin>>line; Может и сутки длиться.
std::cin >>line в конце концов превращается в системный вызов read.Вот как по пунктам для этой команды. (С условием что есть еще 1 поток жаждущий ЦП).
cat /proc/<PID>/stack и увидеть следующую картину:[<0>] wait_woken+0x67/0x80
[<0>] n_tty_read+0x426/0x5a0
[<0>] tty_read+0x135/0x240
[<0>] new_sync_read+0x115/0x1a0
[<0>] vfs_read+0xf4/0x180
[<0>] ksys_read+0x5f/0xe0
[<0>] do_syscall_64+0x33/0x80
[<0>] entry_SYSCALL_64_after_hwframe+0x44/0xa9