1
嘗試編寫一個彙編函數,該函數返回utf-8文本中給定位置的字符。彙編:獲取utf8字符函數的幫助
我已經嘗試了很多解決方案,但我無法使它正常工作。這是我到目前爲止:
.globl utf8_get
.globl _utf8_get
utf8_get:
_utf8_get:
pushl %ebp
movl %esp, %ebp
movl 4(%ebp), %eax
movl 12(%ebp), %ecx
u_loop: cmpb $0x0, (%eax)
jz n_fnd
incl %eax
cmpl $0x0, %ecx
jz fnd
decl %ecx
jmp u_loop
n_fnd: movl $-0x1, %eax
popl %ebp
ret
fnd: movzbl (%eax), %eax
popl %ebp
ret
參數是無符號char *和int。
但它不返回正確的字符。
我應該返回第n個字節,而不是像我寫的字符一樣......我嘗試做出一些更改,結果幾乎是正確的。但我得到的字節在我想要的那個之前,似乎... – Cryptography 2011-05-01 18:46:34
我認爲第一個參數是在4(%ebp)找到的,而返回地址是0(%ebp)或者只是(%ebp)。 – Cryptography 2011-05-01 18:50:36
*在輸入爲'utf8_get'時,返回地址在'(%esp)',第一個參數在'4(%esp)'。但是序言'pushl%ebp; movl%esp,%ebp'在複製前將堆棧指針減少4個字節 - 所以在舊的'%ebp'位於'(%ebp)'之後,返回地址爲'4( %ebp)',第一個參數是'8(%ebp)'。 – 2011-05-01 19:35:23