作者:我们每次都聊撸 | 来源:互联网 | 2022-11-28 17:04
我正在阅读汇编代码,但我没有可用的源代码.next_text
在程序集中调用了一个我正在努力理解的函数.谁可以帮我这个事?
next_text()
push %rbp
push %rbx
sub $0x108,%rsp
mov %rdi,%rbp
mov %esi,%ebx
jmp
16 mov %rbp,%rdx
mov $0x100,%esi
mov %rsp,%rdi
callq
test %rax,%rax
jne
callq
42 sub $0x1,%ebx
45 test %ebx,%ebx
jg
add $0x108,%rsp
pop %rbx
pop %rbp
retq
这里%ebx
以某些大整数开头16000
.我对这个函数正在做什么的理解是它需要一个参数,即文件流.然后它逐行读取文件.该行的最大长度100 hex
是256
字符.然后,它减去ebx
1,并且,只要该文件足够长,保持在阅读该文件16000
的线条,并在结束时ebx
被0
,它退出.我的理解是否正确?此外,命令sub $0x108,%rsp
在这里特别重要,还是只是设置堆栈内存?
1> mevets..:
看起来像我这样:
void next_text(FILE *f, count) {
char buf[256];
while (count-- > 0) {
if (fgets(buf, sizeof buf, f)) {
func();
}
}
}