RISC-V call Pseudo-Instruction Details
Assembler pseudo-instructionFar function call pseudo-instruction using an AUIPC+JALR PC-relative call sequence. Unlike JAL's ±1 MiB limit, call is common for cross-module, shared-library, or dynamically linked calls and can be relaxed by the linker.
What This Pseudo Instruction Is Saving You From Writing
JAL's ±1 MiB range is insufficient for far calls; call forms a PC-relative call sequence via AUIPC+JALR for a larger link-time reach, making it common in RISC-V position-independent code (PIC) and dynamic linking.
Official Semantics Checklist
Toolchain And Linker Boundaries
How To Read The Expansion
What You May See In objdump / Disassembly
Official References And Reading Order
This page treats pseudo-instructions as assembler-level aliases or macros: first read what real instructions they expand to, then use the official ISA manual for the behavior of those real instructions. ABI, relocation, and linker-relaxation details follow the psABI document.
When To Think Of It First
Pitfalls / Common Confusions
FAQ
Is call a real RISC-V instruction?
call is an assembler pseudo-instruction or alias, not a separate hardware opcode. The “Typical Real Expansion” section lists the official expansion, and behavior is defined by the expanded ISA instructions.
What is the main trap when using call?
The common expansion occupies two instructions (AUIPC+JALR); the linker may relax reachable targets to a single JAL