co właściwie robi instrukcja montażu "db"?
Jestem trochę zdezorientowany co do tego, co Instrukcja ASM db faktycznie robi. Czytałem, że definiuje bajt, ale co to właściwie znaczy? Czy przenosi wartość w określone miejsce w pamięci, czy też predefiniuje wartość przed złożeniem kodu?
2 answers
Dosłownie umieszcza ten bajt w pliku wykonywalnym.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-30 05:59:05
Z podręcznika ARM:
〚label: DB DB expression 〚, expression ...〛
Instrukcja DB inicjalizuje pamięć z co najmniej jednym bajtem. etykieta jest symbolem, któremu przypisany jest adres bieżącej pamięci. wyrażenie jest wartością bajtu zapisaną w pamięci. Każde wyrażenie może być symbolem, ciągiem znaków lub wyrażeniem.
Więc, to stwierdzenie zrobić następujące:
- ustawia bieżącą wartość adresu pamięci dla zmiennej "label"
- ustaw wartości "bajtowe" z wyrażenia do bieżącego i następnego adresu pamięci ("wyrażenia" mogą być jednym bajtem lub wieloma bajtami - długi łańcuch)
Po operacji, jeśli porównamy nowy "aktualny" adres pamięci z adresem pamięci przed operacją (przytrzymaj przez etykietę), możemy obliczyć długość listy "expression" (ponieważ każdy znak jest jednym bajtem i to jest takie samo jak zwiększenie 1 w adresie pamięci).
Aby asembler obliczył odległość pomiędzy tutaj ($
w niektórych asemblerach) a Etykieta działa wokół dowolnej instrukcji lub pseudo-instrukcji, a nie tylko db
i wygląda tak w niektórych językach asemblacji. Składnia dyrektywy Exact różni się w zależności od asemblera (ARMASM, NASM, MASM, FASM, itp. wszyscy używają db
do emitowania literalnych bajtów do wyjścia, ale różnią się szczegółami equ
lub czymś innym.)
msg: db "Hello, World!", 0x10, 0
msglen equ $ - msg @ includes the 0 terminator
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-01-03 13:01:01