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