diff options
| author | Irene Knapp <ireneista@irenes.space> | 2026-09-10 09:22:12 -0700 |
|---|---|---|
| committer | Irene Knapp <ireneista@irenes.space> | 2026-09-10 09:22:12 -0700 |
| commit | 2eb637e63a9e5d8f87391beb4af6019963a7c36c (patch) | |
| tree | f27d9d2772bd49475a6af737507a930b424a3a40 /amd64.e | |
| parent | 7a0a28f4d8b738d305b826b5464b27255dd7def3 (diff) | |
add provide-hex, which varies its output width to fit the value
and amd64.e uses it for all the immediates, but not for other kinds of numeric parameter, which looks pretty slick and readable Force-Push: yes Change-Id: Ifb630a4dc172d7495b5458316266fe76b75e07af
Diffstat (limited to 'amd64.e')
| -rw-r--r-- | amd64.e | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/amd64.e b/amd64.e index 1a5df04..e76f33a 100644 --- a/amd64.e +++ b/amd64.e @@ -656,7 +656,7 @@ s" :cc-greater" keyword : push-imm32-extended64 ~ : 5 # push-imm32-extended64 swap 0x68 pack8 swap - ~ : provide-hex32 + ~ : provide-hex pack32 ; ~ (output point, source register, source displacement value, target register @@ -711,19 +711,19 @@ s" :cc-greater" keyword rex-w 0xC7 pack8 swap 0 swap addressing-reg64 swap - ~ : provide-hex32 + ~ : provide-hex pack32 ; : mov-reg64-imm64 ~ : 8 # # mov-reg64-imm64 3roll rex-w swap reg64 0xB8 opcodereg swap - ~ : provide-hex64 + ~ : provide-hex pack64 ; : mov-extrareg64-imm64 ~ : 8 # # mov-extrareg64-imm64 ~ Note the use of the B rex bit here; this instruction puts the register ~ number in the opcode field, so it uses Table 3-1. 3roll rex-wb swap extrareg64 0xB8 opcodereg swap - ~ : provide-hex64 + ~ : provide-hex pack64 ; ~ (output point, source register, target register -- output point) @@ -1086,7 +1086,7 @@ s" :cc-greater" keyword ~ : 2 # # add-reg64-imm8 3roll rex-w 0x83 pack8 swap 0 swap addressing-reg64 swap - ~ : provide-hex8 + ~ : provide-hex pack8 ; ~ See above re: parameter order. @@ -1110,7 +1110,7 @@ s" :cc-greater" keyword ~ : 2 # # sub-reg64-imm8 3roll rex-w 0x83 pack8 swap 5 swap addressing-reg64 swap - ~ : provide-hex8 + ~ : provide-hex pack8 ; ~ See above re: parameter order. @@ -1120,7 +1120,7 @@ s" :cc-greater" keyword ~ : 2 # # sbb-reg64-imm8 3roll rex-w 0x83 pack8 swap 3 swap addressing-reg64 swap - ~ : provide-hex8 + ~ : provide-hex pack8 ; ~ The target register is always rax. @@ -1174,7 +1174,7 @@ s" :cc-greater" keyword 3roll rex-w 0x83 pack8 swap 4 swap addressing-reg64 swap - ~ : provide-hex8 + ~ : provide-hex pack8 ; ~ (output point, source register, target register -- output point) @@ -1189,7 +1189,7 @@ s" :cc-greater" keyword 3roll rex-w 0x83 pack8 swap 1 swap addressing-reg64 swap - ~ : provide-hex8 + ~ : provide-hex pack8 ; ~ (output point, source register, target register -- output point) @@ -1210,7 +1210,7 @@ s" :cc-greater" keyword 3roll rex-w 0xC1 pack8 swap 0 swap addressing-reg64 swap - ~ : provide-hex8 + ~ : provide-hex pack8 ; ~ (output point, bit count, target register -- output point) @@ -1219,7 +1219,7 @@ s" :cc-greater" keyword 3roll 0xC0 pack8 swap 0 swap addressing-reg8 swap - ~ : provide-hex8 + ~ : provide-hex pack8 ; ~ (output point, bit count, target register -- output point) @@ -1228,7 +1228,7 @@ s" :cc-greater" keyword 3roll rex-w 0xC1 swap 1 swap addressing-reg64 swap - ~ : provide-hex8 + ~ : provide-hex pack8 ; ~ (output point, bit count, target register -- output point) @@ -1237,7 +1237,7 @@ s" :cc-greater" keyword 3roll 0xC0 pack8 swap 1 swap addressing-reg64 swap - ~ : provide-hex8 + ~ : provide-hex pack8 ; @@ -1267,7 +1267,7 @@ s" :cc-greater" keyword swap 7 swap addressing-reg64 ~ ( output point, immediate value) swap - ~ : provide-hex8 + ~ : provide-hex pack8 ; ~ Pretend to bitwise-and left with right, and set the flags the same way as @@ -1295,7 +1295,7 @@ s" :cc-greater" keyword ~ : 1 # # jmp-cc-rel-imm8 3roll swap condition-code 0x70 opcodecc swap - ~ : provide-hex8 + ~ : provide-hex pack8 ; ~ (output point, address offset value, condition code -- output point) @@ -1304,7 +1304,7 @@ s" :cc-greater" keyword 3unroll 0x0F pack8 swap condition-code 0x70 opcodecc swap - ~ : provide-hex32 + ~ : provide-hex pack32 ; ~ (output point, register -- output point) @@ -1318,7 +1318,7 @@ s" :cc-greater" keyword ~ : 2 # jmp-rel-imm8 swap 0xEB pack8 swap - ~ : provide-hex8 + ~ : provide-hex pack8 ; ~ (output point, address offset value -- output point) @@ -1326,7 +1326,7 @@ s" :cc-greater" keyword ~ : 5 # jmp-rel-imm32 swap 0xE9 pack8 swap - ~ : provide-hex32 + ~ : provide-hex pack32 ; ~ This is technically a "near" call. The name intentionally doesn't say so. @@ -1336,7 +1336,7 @@ s" :cc-greater" keyword ~ : 5 # call-rel-imm32 swap 0xE8 pack8 swap - ~ : provide-hex32 + ~ : provide-hex pack32 ; ~ Similarly, this is a "near" return. |