Size: a a a

Ассемблер

2020 March 02

a

assembler программист in Ассемблер
楽園松本
Чтобы она работала
Да
источник

楽園松本 in Ассемблер
assembler программист
Да
А как работает твоя ОС? Что она делает?
источник

_

_ in Ассемблер
楽園松本
А как работает твоя ОС? Что она делает?
никак, её нет
источник
2020 March 03

AB

Artöm Bakri Al-Sarmini in Ассемблер
int add_overflows(int lhs, int rhs) {
   return lhs + rhs > lhs;
}


add_overflows:
       xor     eax, eax
       test    esi, esi
       setg    al
       ret

Не понимаю кодген. При каком условии сработает setg?
источник

𝐦

𝐦𝐚𝐤𝐟𝐥𝐨𝐲 in Ассемблер
Artöm Bakri Al-Sarmini
int add_overflows(int lhs, int rhs) {
   return lhs + rhs > lhs;
}


add_overflows:
       xor     eax, eax
       test    esi, esi
       setg    al
       ret

Не понимаю кодген. При каком условии сработает setg?
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮ in Ассемблер
Artöm Bakri Al-Sarmini
int add_overflows(int lhs, int rhs) {
   return lhs + rhs > lhs;
}


add_overflows:
       xor     eax, eax
       test    esi, esi
       setg    al
       ret

Не понимаю кодген. При каком условии сработает setg?
а какие вообще есть условия для срабатывания?
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮ in Ассемблер
SETG r/m8

Установить байт, если больше (ZF=0 и SF=OF)
источник

AB

Artöm Bakri Al-Sarmini in Ассемблер
test ставит of в 0
источник

AB

Artöm Bakri Al-Sarmini in Ассемблер
sf будет 1, если and esi, esi будет иметь знаковый старший бит 1
источник

AB

Artöm Bakri Al-Sarmini in Ассемблер
Куда edi делся?
источник

AB

Artöm Bakri Al-Sarmini in Ассемблер
Artöm Bakri Al-Sarmini
sf будет 1, если and esi, esi будет иметь знаковый старший бит 1
То есть если esi отрицательное
источник

AB

Artöm Bakri Al-Sarmini in Ассемблер
источник

AB

Artöm Bakri Al-Sarmini in Ассемблер
esi второй аргумент. От его знака зависит результат сравнения и только от него. Все понятно
источник

AB

Artöm Bakri Al-Sarmini in Ассемблер
Я слишком пожал пример и не сразу понял, че происходит
источник

_

_ in Ассемблер
показалось "поржал"
источник

楽園松本 in Ассемблер
Artöm Bakri Al-Sarmini
int add_overflows(int lhs, int rhs) {
   return lhs + rhs > lhs;
}


add_overflows:
       xor     eax, eax
       test    esi, esi
       setg    al
       ret

Не понимаю кодген. При каком условии сработает setg?
Ты реверсишь?
источник

AB

Artöm Bakri Al-Sarmini in Ассемблер
Нет, я делал пример кода, где проверка на переполнение через сравнение постфактум выбрасывается компилем, ибо в си переполнение знакового уб
источник

楽園松本 in Ассемблер
Artöm Bakri Al-Sarmini
Нет, я делал пример кода, где проверка на переполнение через сравнение постфактум выбрасывается компилем, ибо в си переполнение знакового уб
Ты обратил внимание, зачем 'xor eax, eax' стоит?
источник

AB

Artöm Bakri Al-Sarmini in Ассемблер
Зануление
источник

楽園松本 in Ассемблер
А зачем оно?
источник