Size: a a a

Ассемблер

2021 March 27

КП

Котеечко Пухнастиньк... in Ассемблер
то есть идет смена контекста
источник

КП

Котеечко Пухнастиньк... in Ассемблер
Алексей Шведов
Это откуда
со спека интел
источник

КП

Котеечко Пухнастиньк... in Ассемблер
я вот думаю, может быть из-за кеша?
источник

КП

Котеечко Пухнастиньк... in Ассемблер
как-то можно его сбросить?
источник

АШ

Алексей Шведов... in Ассемблер
Не, как-то нет интереса подсказывать людям, которые взламывают Малазийские сервера
источник

КП

Котеечко Пухнастиньк... in Ассемблер
Алексей Шведов
Не, как-то нет интереса подсказывать людям, которые взламывают Малазийские сервера
так не подсказывай, я то тут причем?
источник

D

Den in Ассемблер
Alexander Morozov
Вот:

format ELF64 executable 3
entry start

segment readable executable

start:
   mov rax,0fedcba9876543210h
   call print_rax

   mov rax,0
   call print_rax
   mov al,10h
   call print_rax
   mov ah,32h
   call print_rax

   mov ax,3210h
   call print_rax
   mov eax,76543210h
   call print_rax

   mov rax,0ffffffffffffffffh
   call print_rax
   mov al,10h
   call print_rax
   mov ah,32h
   call print_rax

   mov ax,3210h
   call print_rax
   mov eax,76543210h
   call print_rax

   mov eax,1
   xor ebx,ebx
   int 0x80

print_rax:
   push rax

   mov rdi,num
   mov rcx,16
.cicle:
   rol rax,4
   push rax
   and al,0xF
   add al,'0'
   cmp al,'9'
   jbe @f
   add al,'A'-'9'-1
@@:
   stosb
   pop rax
   loop .cicle

   mov eax,4
   mov ebx,1
   mov ecx,num
   mov edx,17
   int 0x80

   pop rax
   ret

segment readable writeable

align 4
num db '................', 0xA

Результат:

FEDCBA9876543210
0000000000000000
0000000000000010
0000000000003210
0000000000003210
0000000076543210
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFF10
FFFFFFFFFFFF3210
FFFFFFFFFFFF3210
0000000076543210
а если mov rax, 0 заменить на mov ax,0 какой вывод будет?
источник

D

Den in Ассемблер
Котеечко Пухнастиньке
как-то можно его сбросить?
Я видел, есть флаги nw и cd регистра cr0 в процессоре, запретить запись сквозную в кэш, и просто заморозить, но они возможно только из ring0 доступны это я не знаю
если включить,по идее это заморозит текущие данные в кэше и запретит запись новых данных туда, т.е кэшироваться будет только то, что там уже есть. Непонятно только какого уровня кэша это касается, l1, l2  ил обоих, или сколько там уровней в современных процах я не в курсе
источник

AM

Alexander Morozov in Ассемблер
Den
а если mov rax, 0 заменить на mov ax,0 какой вывод будет?
format ELF64 executable 3
entry start

segment readable executable

start:
   mov ax,0

   ;mov rax,0fedcba9876543210h
   ;call print_rax

   ;mov rax,0
   call print_rax
   mov al,10h
   call print_rax
   mov ah,32h
   call print_rax

   mov ax,3210h
   call print_rax
   mov eax,76543210h
   call print_rax

   ;mov rax,0
   mov eax,80000000h
   call print_rax

   mov ax,0ffffh
   ;mov rax,0ffffffffffffffffh
   call print_rax
   mov al,10h
   call print_rax
   mov ah,32h
   call print_rax

   mov ax,3210h
   call print_rax
   mov eax,76543210h
   call print_rax

   ;mov rax,0ffffffffffffffffh
   mov eax,80000000h
   call print_rax

   mov eax,1
   xor ebx,ebx
   int 0x80

print_rax:
   push rax

   mov rdi,num
   mov rcx,16
.cicle:
   rol rax,4
   push rax
   and al,0xF
   add al,'0'
   cmp al,'9'
   jbe @f
   add al,'A'-'9'-1
@@:
   stosb
   pop rax
   loop .cicle

   mov eax,4
   mov ebx,1
   mov ecx,num
   mov edx,17
   int 0x80

   pop rax
   ret

segment readable writeable

align 4
num db '................', 0xA
источник

AM

Alexander Morozov in Ассемблер
Den
а если mov rax, 0 заменить на mov ax,0 какой вывод будет?
0000000000000000
0000000000000010
0000000000003210
0000000000003210
0000000076543210
0000000080000000
000000008000FFFF
000000008000FF10
0000000080003210
0000000080003210
0000000076543210
0000000080000000
источник

AM

Alexander Morozov in Ассемблер
Den
а если mov rax, 0 заменить на mov ax,0 какой вывод будет?
Похоже на то, что старшая часть rax принудительно сбрасывается в 0 при обращении к eax.
источник

D

Den in Ассемблер
Alexander Morozov
Похоже на то, что старшая часть rax принудительно сбрасывается в 0 при обращении к eax.
не , я имел ввиду в 4 строчке :)
источник

AM

Alexander Morozov in Ассемблер
Den
не , я имел ввиду в 4 строчке :)
Так я его там и убрал.
источник

D

Den in Ассемблер
нет не убирать а заменить rax на ax
источник

D

Den in Ассемблер
должен быть интересный вывод
источник

AM

Alexander Morozov in Ассемблер
    mov ax,0
   call print_rax
   mov al,10h
   call print_rax
   mov ah,32h
   call print_rax
Так?
источник

AM

Alexander Morozov in Ассемблер
0000000000000000
0000000000000010
0000000000003210
источник

D

Den in Ассемблер
да в этой части
источник

С

Сергей in Ассемблер
Alexander Morozov
0000000000000000
0000000000000010
0000000000003210
А зачем у тебя на схеме кондёр? Это попытка избавиться от третьей гармоники? Просто не понимаю его назначение 😟
источник

AM

Alexander Morozov in Ассемблер
    mov rax,0
   call print_rax
   mov eax,7FFFFFFFh
   call print_rax
   mov eax,80000000h
   call print_rax
   mov rax,0FFFFFFFFFFFFFFFFh
   call print_rax
   mov eax,7FFFFFFFh
   call print_rax
   mov eax,80000000h
   call print_rax
источник