GNU as - pokročilejší práce s řetězcem ?
Pavel Troller
patrol na sinus.cz
Pondělí Duben 28 06:29:28 CEST 2014
Zdravím,
oslovil mne kolega, místní nečlen, zda bych se nepokusil vyřešit tento
problém:
Cílem je vzít textový řetězec a vložit jej do paměti, avšak každý byte
snížit o hodnotu znaku A, tj. aby A se uložilo jako 0, B jako 1 atd.
Zkoušeli jsme to tímto makrem:
.macro _KEYTEXT TEXT
.irpc CHR, \TEXT
.byte '\CHR-'A
.endr
.endm
_KEYTEXT HELLO
Zásadní problém se ukázal na řádce s direktivou .byte. Nenašli jsme
syntakticky správný způsob konverze znaku (dodaného direktivou .irpc v
proměnné CHR) na číslo. Zde zapsaný způsob nadává, neboť znak ' působí
jen literálně a očekává za sebou natvrdo jeden znak (nikoliv proměnnou),
tedy \C vyhodnotí jako onen znak a od H dále se mu to nelíbí:
test.S:10: Error: junk at end of line, first unrecognized character is `H'
Nepomohlo naprosto nic, různé závorky či jiné brikule, použití direktivy
.altmacro atd. atd.
Tuší někdo ? Nebo musíme konstatovat, že takovou trivialitu v gasu napsat
nelze ?
Zdraví Pavel
Další informace o konferenci Hw-list