尝试编写一个汇编函数,该函数以utf-8文本返回给定位置的char。
我尝试了很多解决方案,但我无法正常工作。这就是我到目前为止所做的:
.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
参数是unsigned char *和int。
但它没有返回正确的字符。
答案 0 :(得分:0)
8(%ebp)
- 而不是4(%ebp)
,其中包含返回地址。%eax
之后增加%ecx
,而不是之前。