【发布时间】:2019-02-10 15:12:00
【问题描述】:
有以下非常简单的c程序:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *buffer = (char*)malloc(20);
}
并用mips-linux-gnu-gcc 编译它,看起来调用编译为以下指令:
.text:004007EC 24 04 00 14 li $a0, 0x14
.text:004007F0 8F 82 80 50 la $v0, malloc # Load Address
.text:004007F4 00 40 C8 25 move $t9, $v0
.text:004007F8 03 20 F8 09 jalr $t9 ; malloc # Jump And Link Register
.text:004007FC 00 00 00 00 nop
编译的完整命令行为:
mips-linux-gnu-gcc my_malloc.c -o my_malloc.so
但是,我希望将函数调用编译为普通的分支指令:
jal malloc
li $a0, 0x14
有人知道如何实现这个结果吗?
【问题讨论】:
标签: gcc compilation mips code-generation addressing