2018年9月20日 星期四

x86 assembly in Linux - part 2

"Programming from the Ground Up" 的作者建議寫組語時
最好是拿紙筆把要用到的暫存器安排一下
寫起 code 來會比較順暢

昨天回家洗澡時就想到
part 1 的 example 做了一些很不必要的動作
也多用到一些不必要的暫存器

舉例來說
%ebx 存起的是 memory address
也是我存放要比較整數的 list (array)

原本 for loop 都會用 %edi 來當 index variable
但在這個 case 其實是不必要的
因為我們本來就可以對暫存器直接做加減

start_loop:
    incl %edi

    movl $4, %edx
    imull %edi, %edx
    addl %ebx, %edx

start_loop:
    addl $4, %ebx

沒有留言:

張貼留言