Начало TEXT минус конец PAGEZERO, получается 0x104a60000 - 0x100000000 = 0x4a60000 (делта смещение)
Вот адрес ,к примеру, на котором я хочу установить breakpoint
A - T + 0x104a60000. Я пытаюсь загрузить 64-битное ядро по адресу 0x1000
AllocatePages только возвращает адрес выделенной памяти по адресу в последнем параметре. Т.е. куда будут загружены сегменты ELF сказать нельзя и, соответственно, без динамической релокации этот ELF скорее всего работать не будет.AllocatePages будет то же расстояние, что и между сегментами ELF, в то время как кодогенерация с флагом -fPIE вполне может считать это расснояние неизменным. Такой ELF нужно загружать в один большой блок памяти, сохраняя расстояние между сегментами.header.e_entry -- это прыжок в неизвестность. gcc вызванный с флагом -fomit-frame-pointer генерирует код без этой последовательности и использует rbp как ещё один регистр общего назначения.Почему тогда все регистры не помещаются в стек?
Зачем нужен отдельный синтаксис для препроцессора
Как иизменить параметр tdp_mmu?
echo N | sudo tee /sys/module/kvm/parameters/tdp_mmu не помогает?root@Line-host:~# echo "options kvm tdp_mmu=N" >/etc/modprobe.d/kvm-disable-tdp-mmu.conf
root@Line-host:~# cat /sys/module/kvm/parameters/tdp_mmu
Y
rmmod kvm ; modprobe kvm чтобы убедиться, что параметр применяется. Любая команда start/stop/restart NetworkManager выдает одно и тоже
sudo: resolve_conf.c:571: update_from_conf: Assertion 'resolve_conf_matches (resp, conf)' failed
/etc/resolv.conf.su, например. как мне модифицировать мою программу, чтобы она могла определять потоки и корректно отправлять их коллектору?
почему вычитается 32?
pushq %rbp
movq %rsp, %rbp
subq $32, %rsp
movsd %xmm0, -24(%rbp)
movsd %xmm1, -32(%rbp)movsd -32(%rbp), %xmm0
subsd -24(%rbp), %xmm0
movsd %xmm0, -8(%rbp)movsd .LC0(%rip), %xmm0
divsd -8(%rbp), %xmm0
movsd %xmm0, -16(%rbp)relocation R_X86_64_32S against `.text' can not be used when making a shared object
что делать?
objdump -dr lib.o27: 0f 01 1c 25 00 00 00 lidt 0x0
2e: 00
2b: R_X86_64_32S .textlea rax, [rel idtDescriptor]
lidt [rax]dq _idtЯ долго изучал код
пытался менять ... "0x013ded84 ldr x1, [x8, 0x250]"
Задача либо понять "1" на любое нужное число, либо сделать так чтобы количество скачиваний было равным цене товара.
adrp x8, 0x2d71000 который теперь будет не нужен. выдает непонятную фигню
res resb 1
…
mov [res], eaxпо умолчанию int является signed
Irrespective of the choice made, char is a separate type from the
other two and is not compatible with either.signed char -- это, пожалуй, единственное не вызывающее вопросов применение ключевого слова signed в C-коде написанном человеком. В остальных случаях роль signed -- чисто декоративная. все это не подходит, так как мне нужно чтобы полученное число c лежало в промежутке [0; 11]
a * (max(b) + 1) + b же.max(b) + 1.