![](https://seccdn.libravatar.org/avatar/129c5b7244f2b7b09a1348ad3d488c57.jpg?s=120&d=mm&r=g)
On May 20, 09 19:03:12 +0200, Rafał Miłecki wrote:
MOVE work[00] [..XX] <- reg[0180] [..XX] Registers are 32 bits, and the atom ops can operate on individual bytes or groups of bytes. In this case the op is operating on the lower two bytes (hence the ..XX). In your example the lower two bytes are 0x4567.
You say registers are 32bits... that's fine, for example my 0x0185 is 0xAB, so 2*16bits = 32bits. Alright.
But next you say two lower bytes (2B == 16b) of my example 0x0180 (0x01234567) are 0x4567. Here I'm lost. 4*16bits = 64bits. That means 8B, not 2B :|
Remember, the operation was working on different registers than your original dumps due to the *4.
Finally, how does work DIV WS_QUOT/LOW32 [XXXX] <- 00000008 Divide the current workspace value by 8.
5.2.7DIV_ Performs an arithmetical “DIV” operation between the source and destination. Result of division will be stored into dedicated Work Space location, indexed by WS_QUOTIENT definitions. Reminder of division will be stored into dedicated Work Space location, indexed by WS_REMINDER definitions. So this devides WS_QUOTIENT by 8, and stors that in WS_QUOTIENT and the remainder in WS_REMINDER. The work register indices are defined in AtomDis/atombios_consts.h CU Matthias -- Matthias Hopf <mhopf@suse.de> __ __ __ Maxfeldstr. 5 / 90409 Nuernberg (_ | | (_ |__ mat@mshopf.de Phone +49-911-74053-715 __) |_| __) |__ R & D www.mshopf.de -- To unsubscribe, e-mail: radeonhd+unsubscribe@opensuse.org For additional commands, e-mail: radeonhd+help@opensuse.org