The z hardware guys can't be responsible for mis-naming by the C program
creators of variable types.
:-)
z hardware definitions have been around much longer than the C language.
Tony Thigpen
Charles Mills wrote on 8/6/25 9:16 AM:
On Wed, 6 Aug 2025 05:42:55 -0400, David Cole <[email protected]> wrote:
In Principles:
- LB loads a byte into a register and sign-extends it.
- LLC also loads a byte into a register but then zero pads it.
That's all pretty clear, but...
Why use B in one case and C in the other?
- Why not LC instead of LB?
- Or why not LLB instead of LLC?
I would *think* (untested) that if you had a byte that contained for example
X'C1' then LB would give you FFFFFFC1 and LLC would give you 000000C1.
The C language treats "chars" as binary integers. Implementations vary, but in
most C compilers, an int is 32 bits, a short is 16 bits, and a char is 8 bits -- all
binary integers. Either may be signed or unsigned.
I would *guess* that the C compiler team wanted a quick way to fetch either a
signed or an unsigned char from storage for subsequent arithmetic. They would
use LB for a signed char and LLC for an unsigned char.
I don't know Java but it may well be similar.
Assembler programmers are welcome to come along for the ride.
Charles
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN