Date: Mon, 13 Oct 2014 08:54:37 -0600 From: Warner Losh <imp@bsdimp.com> To: =?iso-8859-1?Q?fran=E7ai_s?= <romapera15@gmail.com> Cc: freebsd-drivers@freebsd.org Subject: Re: How the FreeBSD developers solve problems that are not resolved by Assembly? Message-ID: <A05B87BF-7A27-4270-BBA8-8EB6567682B8@bsdimp.com> In-Reply-To: <CAK_6RwcXLDFfDMWn%2BA%2Bjcap3C8jV=G7ZWfY9cr-9mv5h3z4=og@mail.gmail.com> References: <CAK_6RwcXLDFfDMWn%2BA%2Bjcap3C8jV=G7ZWfY9cr-9mv5h3z4=og@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--Apple-Mail=_85784895-D37F-4028-B498-FF41133E5A5D Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=windows-1252 On Oct 13, 2014, at 6:50 AM, fran=E7ai s <romapera15@gmail.com> wrote: > I think that the only case where you have to resort to writing binary = code > manually > is when the assembler cannot output the desired code for some reason. > If I recall correctly, there is only one such case in the HelenOS > sources: >=20 > = http://trac.helenos.org/browser/mainline/kernel/arch/mips32/include/debug.= h?rev=3Dmainline%2C1446.3.1 >=20 > Here they manually encode the opcodes of five special debugging > instructions for the MSIM MIPS simulator (these instructions are not > part of the standard MIPS ISA, thus the assembler does not know them). >=20 > But the developers of FreeBSD not write binary code manually. >=20 > How the FreeBSD developers solve problems that are not resolved by = Assembly? More or less the same way. We either create a macro expands to something = like ".word <foo> =93 or sometimes the .word <foo> is just hard coded = inline when there=92s only going to be one of them. Sometimes we expose = them both in assembly and in C code, in which case what we do varies a = bit to accommodate the different language=92s syntax. It is rare, but = has happened, that we only expose it to C code. Generally, though, we try to add support for the opcodes to gas so that = we get the constraint testing it does (making sure the opcode is = supported at the level you are compiling, making sure it isn=92t in a = delay slot or violating some other precondition for its use). Warner --Apple-Mail=_85784895-D37F-4028-B498-FF41133E5A5D Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP using GPGMail -----BEGIN PGP SIGNATURE----- Comment: GPGTools - https://gpgtools.org iQIcBAEBCgAGBQJUO+etAAoJEGwc0Sh9sBEA5/sQAKiV+3YkNVc3qxPKoFo6RqBC KEd6f38YKBTA4DrqwZ1AsU7Y8/U66lsyYKFXkWvmLhE+eqV0pvquXBQ3+AN+eDRN Rjsb4kMKgkp5x3FqA6lW+yS9Z+Z8UucbBXfbv4TGjY8qZ1jW/Xx8L08sAmCXtde0 bfpVqlipR7hlfXtSycVtqDB4Si92RdclRPqmH6AFn5/yP6ZbQ1SR0cwzMn/mEupc Hsxe8TC1cepPI5brnRNkr55jZJsbi51y/+AFD0GZN80WmgJRAkJikd8pyc5hunTB z4TEI8/bYHRQ0uRmS1ElBLPo94xwSaxsdkgdqdVRQbh831c09oxQwU+Ayc1MkEqH UHXNRocjzDnnM0dk/xfeBzNCpk3c4slxZgQytNOW/rgPDnCNL7LuZh5Yz/rKARU9 mupbtSCVpO4scAG4tJHoV0NpMo6PUo6qZvnbm8Q0Q9jEm9T9L2ytfGRojxG+vOdX 8KEEeP4zf7butECHH+aawpi0TMTwB6wBB619hqdeh8RDjcQDYc8fY+UxWXJMjCO8 dWFELzwzjZr9KEdzz7BfNk7yxJg2xPSYUzvdzWt5l9wSediC9kFtrdrna68EO2e3 LhQaHqxXzzVx0viur2K8yM47ojwXBdMoFLHSHNtR5qvYukbn0nT0BKlGwakMwyK1 ncTDcj2O5w2Y5aHFPKpe =C24h -----END PGP SIGNATURE----- --Apple-Mail=_85784895-D37F-4028-B498-FF41133E5A5D--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?A05B87BF-7A27-4270-BBA8-8EB6567682B8>