![]() |
|
Message-Id: <20250907131250.2119965-1-tommi@hirvola.fi> Date: Sun, 7 Sep 2025 16:12:50 +0300 From: Tommi Hirvola <tommi@...vola.fi> To: musl@...ts.openwall.com Cc: Tommi Hirvola <tommi@...vola.fi> Subject: [PATCH] x86_64, x32: avoid useless REX.w in crt1.o _start this shaves off 1 byte in crt1.o _start (x86_64, x32) by avoiding useless REX prefix when clearing the rbp register to zero: 48 31 ed | xor %rbp, %rbp 31 ed | xor %ebp, %ebp the semantics are identical as the latter "xor %ebp, %ebp" also resets the upper 32 bits of %rbp to zero. however, "xor %ebp, %ebp" does not require REX prefix (48) so its instruction encoding is one byte shorter. hence, this commit switches from "xor %rbp, %rbp" to "xor %ebp, %ebp". --- arch/x32/crt_arch.h | 2 +- arch/x86_64/crt_arch.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x32/crt_arch.h b/arch/x32/crt_arch.h index b1c9c476..b7af4c4d 100644 --- a/arch/x32/crt_arch.h +++ b/arch/x32/crt_arch.h @@ -3,7 +3,7 @@ __asm__( ".global " START " \n" ".type " START ",%function \n" START ": \n" -" xor %rbp,%rbp \n" +" xor %ebp,%ebp \n" " mov %rsp,%rdi \n" ".weak _DYNAMIC \n" ".hidden _DYNAMIC \n" diff --git a/arch/x86_64/crt_arch.h b/arch/x86_64/crt_arch.h index b1c9c476..b7af4c4d 100644 --- a/arch/x86_64/crt_arch.h +++ b/arch/x86_64/crt_arch.h @@ -3,7 +3,7 @@ __asm__( ".global " START " \n" ".type " START ",%function \n" START ": \n" -" xor %rbp,%rbp \n" +" xor %ebp,%ebp \n" " mov %rsp,%rdi \n" ".weak _DYNAMIC \n" ".hidden _DYNAMIC \n" -- 2.51.0
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.