小型汇编代码序列优化(intel x86)

Ale*_*lex 1 optimization x86 assembly intel

我正在用汇编语言做一些练习,我发现了一个关于优化的问题,我无法弄清楚.任何人都可以帮助我

所以问题是优化以下汇编代码:

----------------------------例1 --------------------- ----

mov dx, 0 ---> this one I know-> xor dx,dx
Run Code Online (Sandbox Code Playgroud)

----------------------------例题--------------------- ---

cmp ax, 0
je label
Run Code Online (Sandbox Code Playgroud)

----------------------------示例3 --------------------- ----

mov ax, x
cwd
mov si, 16  
idiv si     
Run Code Online (Sandbox Code Playgroud)

---->在这个例子中我能想到的最多的是idiv 16的最后两行,但我不确定

----------------------------范例4 --------------------- ----

mov ax, x
mov bx, 7
mul bx
mov t, ax
Run Code Online (Sandbox Code Playgroud)

----------------------------例5 --------------------- ------

mov si, offset array1
mov di, offset array2
; for i = 0; i < n; ++i
do:
   mov bx, [si]
   mov [di], bx
   add si, 2
   add di, 2
loop do
endforloop
Run Code Online (Sandbox Code Playgroud)

pax*_*blo 5

例如2,您应该查看andtest操作码.与示例1类似,它们允许您不再需要常量.

例如4,记住它x * 7x * (8 - 1)或相同,扩展,x * 8 - x.乘以8可以使用移位指令.

例如5,你认为英特尔会提供一种更简单的从SI转换到DI的方法,因为这是它们存在的全部原因.也许像REPetitive MOVe String Word :-)