| Bellacosa Mainframe e a linguagem assembler em mainframe o mitico hlasm |
☕💣🚀 PADAWAN, O ASSEMBLER NÃO É UMA LINGUAGEM. É O MOMENTO EM QUE VOCÊ PARA DE DISCUTIR COM O COMPUTADOR E COMEÇA A CONVERSAR DIRETAMENTE COM A CPU!
As Lições Ocultas do Curso IBM z/Architecture Assembler Language – Part 2
Existe um momento na vida de todo profissional de Mainframe em que COBOL deixa de ser suficiente.
Não porque COBOL seja limitado.
Não porque o Mainframe seja antigo.
Mas porque surge uma pergunta perigosa:
"O que realmente acontece quando meu programa executa?"
É nesse momento que nasce o interesse pelo Assembler.
O curso IBM EZ341G — z/Architecture Assembler Language Part 2: Machine Instructions — não ensina apenas instruções. Ele ensina como o processador IBM Z pensa.
E isso muda tudo.
O Grande Segredo: Tudo é Registrador
Durante o curso inteiro existe uma mensagem escondida:
LH 3,NUM
AR 3,4
CR 3,5
BE IGUAL
Tudo gira em torno dos registradores.
Quando um programador COBOL escreve:
ADD VALOR-A TO VALOR-B
o compilador transforma isso em dezenas de instruções de máquina.
O processador não entende COBOL.
Não entende Java.
Não entende Python.
Ele entende apenas instruções.
E quase todas elas envolvem registradores.
A Regra de Ouro: Se Tem G, Pense em 64 Bits
Uma das maiores pegadinhas do curso é distinguir instruções de 32 e 64 bits.
O padrão da IBM é elegantemente simples:
G = Grande = 64 bits
Exemplos:
LG
LGR
LGFI
AG
AGFI
CG
CGR
Todos trabalham sobre o registrador completo.
Já:
L
A
C
AFI
operam apenas sobre a low half do registrador.
Essa pequena letra "G" aparece em dezenas de questões do exame.
O Mistério do Condition Code
O Condition Code é provavelmente o conceito mais importante do curso.
Após uma comparação:
CR 3,4
a CPU grava um valor invisível dentro do PSW.
Esse valor é:
CC=0 Equal
CC=1 Low
CC=2 High
Depois disso:
JE IGUAL
JL MENOR
JH MAIOR
tomam decisões baseadas nesse resultado.
Perceba a beleza do mecanismo.
O processador não executa "IF".
Ele apenas produz Condition Codes.
Todo o resto é interpretação.
O Macete 8421
Outro conceito que aparece repetidamente no exame:
8 = Zero
4 = Minus
2 = Plus
1 = Overflow
Esse é o famoso padrão das máscaras de branch.
Por isso:
JZ
JM
JP
JO
são apenas apelidos amigáveis para máscaras numéricas.
Quando você entende isso, dezenas de Extended Mnemonics deixam de ser um problema.
Packed Decimal: A Religião Financeira do Mainframe
Se existe uma tecnologia que sobreviveu a todas as modas da computação, é o Packed Decimal.
Enquanto o restante do mundo usa floating point para tudo, bancos continuam confiando bilhões de dólares diariamente em instruções como:
AP
SP
MP
DP
CP
O motivo é simples.
Dinheiro não tolera aproximações.
Como Reconhecer um Packed Decimal Válido
Muitos alunos perdem pontos porque esquecem uma regra básica.
Os dígitos devem conter:
0-9
E o último nibble deve conter um sinal:
C
D
F
Exemplos válidos:
123C
123D
550F
Exemplos inválidos:
12AC
00C1
1ABC
Quando isso acontece:
S0C7
Data Exception
O famoso terror dos programadores COBOL.
O Verdadeiro Significado do S0C7
Muitos iniciantes acreditam que:
S0C7 = erro de COBOL
Errado.
O S0C7 é um erro da CPU.
Ela tentou executar uma operação decimal e encontrou dados inválidos.
O COBOL apenas estava no lugar errado na hora errada.
Multiplicação: Onde Todo Mundo Erra
As instruções:
M
MR
MP
parecem simples.
Mas escondem algumas das regras mais cruéis da arquitetura.
Por exemplo:
MR 2,3
não multiplica R2 por R3.
Na verdade utiliza:
Par R2-R3
e coloca o resultado distribuído entre os dois registradores.
Essa é uma das pegadinhas favoritas da IBM.
Divisão: A Arte de Produzir S0CB
A instrução:
DP
é responsável por um dos abends mais famosos do mundo Mainframe:
S0CB
Decimal Divide Exception
Ele ocorre quando:
O divisor é zero.
O quociente não cabe no campo de destino.
Ou seja, a CPU está protegendo seus dados.
SRP: A Instrução que Parece Magia
Poucas instruções impressionam tanto quanto:
SRP
Shift and Round Packed.
Com ela podemos:
123.95 -> 123
123.95 -> 124
55 -> 5500
Tudo sem realizar multiplicações ou divisões explícitas.
Na prática, SRP é uma calculadora financeira embutida no hardware.
ED: O Momento em que o Mainframe Aprende a Falar com Humanos
Packed Decimal é excelente para cálculos.
Mas humanos não gostam de ler:
12345C
É aí que entra:
ED
A instrução EDIT.
Ela transforma números internos em formatos amigáveis:
12.345,67
24.00
999.99
O ED é literalmente a ponte entre o mundo da CPU e o mundo dos relatórios.
O Poder das Máscaras
A maioria dos alunos demora para perceber que:
ED
não faz a formatação.
Quem faz é a máscara.
Por isso encontramos padrões como:
20
21
4B
6B
40
onde:
20 = Digit Selector
21 = Significance Starter
4B = Ponto Decimal
6B = Vírgula
40 = Espaço
É um mecanismo brilhante criado décadas antes da maioria das linguagens modernas.
O Que o Curso Realmente Ensina
Oficialmente o curso fala sobre:
LOAD
STORE
ADD
SUBTRACT
MULTIPLY
DIVIDE
COMPARE
BRANCH
CHARACTERS
PACKED DECIMAL
Mas na prática ele ensina algo muito mais profundo.
Ele mostra que toda linguagem moderna, toda API, todo framework e toda aplicação corporativa acabam reduzidos a algumas operações fundamentais:
Mover dados
Somar
Subtrair
Comparar
Desviar
Formatar
O Mainframe apenas faz isso de forma extremamente explícita.
Conclusão
☕💣🚀 PADAWAN, quando você aprende Assembler, descobre um segredo que poucos profissionais conhecem.
O computador nunca executou COBOL.
Nunca executou Java.
Nunca executou Python.
Ele sempre executou instruções de máquina.
O Assembler apenas remove o tradutor e permite que você converse diretamente com a arquitetura IBM Z.
E quando isso acontece, você deixa de ser apenas um programador.
Você começa a entender como a própria CPU pensa.