Jump to content

Sign in to follow this  
Сергей Борщ

Так как же все-таки работает команда LDM {}^

Recommended Posts

Итак имеем: процессор в IRQ mode, выполняет команду

    LDMFD    LR, {R0-LR}^

результат в железе: значения попадают в R0...R12, SP_user, LR_user, CPSR не тронут.

результат в симуляторе IAR EWARM4.30A: значения попадают в R0...R12, SP_user, LR_user, в CPSR копируется значение из SPSR_irq.

Согласно документу ARM DDI 0029E:

LDM with R15 in transfer list and S bit set (Mode changes)

If the instruction is a LDM then SPSR_<mode> is transferred to CPSR at the same time as R15 is loaded.


R15 not in list and S bit set (User bank transfer)

For both LDM and STM instructions, the User bank registers are transferred rather than the register bank corresponding to the current mode.


В данном случае R15 нет в списке и по моим понятиям копирования SPSR_irq быть не должно. Однако вот тут:


коллега утверждает что копирование SPSR_irq происходит всегда. Кто из нас прав?

Share this post

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this