Portál AbcLinuxu, 5. června 2025 09:04
„začínáme být nejistí, tím co děláme, tak to to raději pro jistotu uděláme“hehe, tak to neni dobry signal do buducnosti
memset(&str, 0, sizeof(str))
spíš, než aby inicializovalo ve struktuře položku po položce.
mov
ů s nulou, ale ty movy bude generovat stejně i pro jednotlivé položky - takže když bude každá položka zarovnána na 8B, tak by se to nevyplatilo stejně a nebylo by to ani náročnější. Programátor ale s těmi dírami nemá co pracovat a ani se o ně starat, tak je to úplně jedno. A pokud tam budou nějaká data z předchozí aplikace, která měla citlivé údaje, měla si je před ukončením promazat ona a né vy.
ldi r16, 8 ; delka struktury cyk: st Z+,r17 ; 2 takty dec r16 ; 1 takt brne cyk ; 2 takty pro kazdy skok "dokud neni nula" (1 takt pro pruchod rovne)... tedy cca 16+8+15 taktu a porovnej s timto
st Z+,r17 ; 2 takty st Z+,r17 ; 2 takty st Z+,r17 ; 2 takty st Z+,r17 ; 2 takty st Z+,r17 ; 2 takty st Z+,r17 ; 2 takty st Z+,r17 ; 2 takty st Z+,r17 ; 2 takty... 16+0+0 ...
; v rdi je pointer na strukturu ; { int64_t, int32_t, int64_t, uint8_t } ; kde jednotlivé prvky jsou zarovnány na 8B ; zarovnání dané struktury je 8B mov QWORD [rdi], 0 mov QWORD [rdi+8], 0 mov QWORD [rdi+16], 0 mov QWORD [rdi+32], 0Nebo
mov QWORD [rdi], 0 add rdi, 8 mov QWORD [rdi], 0 add rdi, 8 mov QWORD [rdi], 0 add rdi, 8 mov QWORD [rdi], 0A nebo třeba
xor rax, rax mov QWORD [rdi], rax mov QWORD [rdi+8], rax mov QWORD [rdi+16], rax mov QWORD [rdi+32], raxNebo třeba použití instrukce
lea
apod...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.