Благодарю за предоставленную информацию!
И в данное время возник следующий вопрос, по ассемблеру (чтоб не плодить лишние топики).
Я объявляю переменные в байтах, но в окончательном коде, они всё равно используют не байты, а двойные слова, например не al, а eax (код привожу ниже).
С чем это связано?
Мне писать процедуры на ассемблере, чтоб они использовали правильные данные?
Google translate:
Thank you for the information provided!
And at this time the next question arose, in the assembler (so as not to produce unnecessary topics).
I declare variables in bytes, but in the final code, they still use not bytes, but double words, for example, not al, but eax (I give the code below).
What is the reason for this?
Should I write routines in assembler so that they use the correct data?
var
m, n, z: Byte;
... // file *.s (assembler + pascal)
# [69] n := 255 - m;
movzbl %al,%eax // <<<<<
movl $255,%ecx // <<<<<<
subl %eax,%ecx //<<<<<<
.Ll28:
# [70] z := Byte(Str[3]) - 48;
movq -8(%rbp),%rax // <<<<
movzbl 2(%rax),%eax // <<<<
subl $48,%eax // <<<< Not Byte!!!!!
.Ll29:
# [71] if z > n then
cmpb %al,%cl
jb .Lj13