把device_prep_dma_pause转成汇编指令
时间: 2023-06-26 07:06:40 浏览: 129
power_prep.zip_prep
`device_prep_dma_pause()` 是一个函数,它不是汇编指令。然而,我们可以将其转换为汇编指令的序列,以便更好地理解其实现。
假设我们的目标平台是x86-64,GCC编译器的版本为9.3.0。下面是可能的汇编代码:
```asm
device_prep_dma_pause:
push rbp
mov rbp, rsp
mov QWORD PTR [rbp-8], rdi
mov QWORD PTR [rbp-16], rsi
mov rax, QWORD PTR [rbp-8]
mov rdx, QWORD PTR [rax+24]
mov rax, QWORD PTR [rbp-8]
mov esi, 2
mov edx, edx
mov edi, eax
call qword ptr [rax+32]
nop
pop rbp
ret
```
这个汇编代码可以被翻译成以下C代码:
```c
void device_prep_dma_pause(struct dma_chan *chan, dma_addr_t addr)
{
dma_cookie_t cookie = dma_async_is_tx_complete(chan, addr);
while (cookie == DMA_ASYNC_IN_PROGRESS)
cpu_relax();
}
```
请注意,这个逆向转换不一定是完美的,因为编译器可以对代码进行各种优化和变换。因此,这个汇编代码序列可能并不是完全正确的,但应该足够接近原始的实现。
阅读全文