From mboxrd@z Thu Jan 1 00:00:00 1970 MIME-Version: 1.0 In-Reply-To: References: <2dce475f96630e9cf6e633e2f74a2ffc@coraid.com> Date: Thu, 17 Nov 2011 11:07:40 -0500 Message-ID: Subject: Re: [9fans] 6a bug From: Russ Cox To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net> Cc: charles.forsyth@gmail.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Topicbox-Message-UUID: 4125a4c4-ead7-11e9-9d60-3106f5b1d025 On Wed, Nov 16, 2011 at 7:50 PM, erik quanstrom wro= te: > well my example is slightly booged then. =C2=A0i just needed a label. > the point still stands that 6l is not liking the *value*. =C2=A0this actu= ally > comes from _start64v, and i wanted to simplify it. =C2=A0if you replace > the given value with $10, it 6l will not complain. This is a detail of the x86-64 architecture. An immediate in an arithmetic instruction must fit in a signed 32-bit int, and this one does not. You've written an impossible instruction, and the linker is telling you in own cryptic way. The assemblers do not know such details, never have. You need to MOVQ that constant into a register and then use the register as the argument to ADDQ. Russ